gpt4 book ai didi

c++ - 代码不从文件C++读取文本

转载 作者:行者123 更新时间:2023-12-03 12:48:50 25 4
gpt4 key购买 nike

微软 Visual Studio 2017 C++

问题是代码无法读取红波 test.txt 文件 MVS 点中的文本,并且在对话框中写入:“const char”类型的参数与 char 类型的参数不兼容

文件位于项目文件夹中////

//

#include "stdafx.h"
#include "stdlib.h"
# include <fstream>
#include <stdio.h>


void HowManyWords(char FileName[]) {
FILE*file = fopen(FileName, "rt");
//if (!file)return false;
int count = 0;
char str[100];
while (fgets(str, 100, file)) {
for (int i = 0; str[i]; i++) {

if (str[i] >= 'A'&&str[i] <= 'Z' || str[i] >= 'a'&&str[i] <= 'z') {
if (str[i + 1] >= 'A'&&str[i + 1] <= 'Z' || str[i + 1] >= 'a'&&str[i + 1] <= 'z') {
}
else {
count++;
}
}
}
printf("%s", str);
}
fclose(file);
printf("%i", count);
}

int main()
{
HowManyWords("test.txt");

printf("\n");
system("pause");
return 0;
}

//111字

问题。

problem

最佳答案

您的程序的问题之一是您的函数采用指向可变的 R/W 字符数组的指针:

void HowManyWords(char Filename[]);

main 函数中,您向其传递一个 const 字符字符串。文本文字是恒定的。

如果您不更改文件名的内容,请将其作为“只读”传递:

void HowManyWords(char const * Filename)

从右向左读取类型,这是一个指向常量(“只读”)char 的指针。该函数声明它不会更改Filename 的内容。因此你可以向它传递一个字符串文字。

有关详细信息,请在互联网上搜索“c++ const 正确性指针”。

编辑1:简单示例
下面是一个简单的工作示例,显示了 HowManyWords 函数的正确参数语法:

#include <stdio.h>

void HowManyWords(const char Filename[])
{
puts("Filename: ");
puts(Filename);
puts("\n");
}

int main()
{
HowManyWords("test.txt");
puts("\n");
return 0;
}

以下是在 Windows 7 上使用 Cygwin 上的 g++ 进行的编译和输出:

$ g++ -o main.exe main.cpp

$ ./main.exe
Filename:
test.txt





$

正如我上面所说,在 HowManyWords 中注释掉您的代码,并使参数传递正常工作。接下来,添加一点代码;编译、测试并重复。

关于c++ - 代码不从文件C++读取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49017020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com