我尝试编写一个程序来计算从文件中取出的文本中的单词数。我有一个问题,编译器找不到我的文件,但我把这个文件放在项目文件夹中。 我该怎么办?
#include <stdio.h>
#include <conio.h>
#include <string.h>
int words(const char sentence[ ]);
int main(void) {
char sentence[100];
FILE *cfPtr;
if ( (cfPtr = fopen("C programming.dat", "r")) == NULL ) {
printf( "File could not be opened\n" );
}
else {
fscanf(cfPtr, "%s", sentence);
}
words(sentence);
printf("%d", words(sentence));
getch();
return 0;
}
int words(const char sentence[ ]) {
int i, length = 0, count = 0, last = 0;
length = strlen(sentence);
for (i = 0; i < length; i++)
if (sentence[i] == ' ' || sentence[i] == '\t' || sentence[i] == '\n')
count++;
return count;
}
答案 0 :(得分:0)
如果文件不在工作目录(程序所在的文件夹)中,则需要指定整个文件路径。在Linux机器上,这将类似于"/home/your-user-name/Desktop/text.txt"
。对于Windows机器,它将是"c:\\your\\file\path\\text.txt"
。如果文件在您的工作目录中并且程序仍然无法找到它,那么它可能不喜欢文件名中的空格。尝试命名CProgramming.dat
并查看是否有效。
答案 1 :(得分:0)
我会尝试提高程序的可用性,接受文件名作为可选参数
int main(ant argc, char *argv[]) {
char sentence[100];
const char *filename = "C programming.dat";
FILE *cfPtr;
if (argc == 2)
filename = argv[1];
if ( (cfPtr = fopen(filename, "r")) == NULL ) {
printf( "File '%s' could not be opened\n", filename );
}
else {
int total = 0;
while (fgets(sentence, sizeof sentence, cfPtr))
total += words(sentence);
printf("%d", total);
fclose(cfPtr);
}
getch();
return 0;
}
...
注意:未经测试