0

我试图编写一个程序来计算从文件中获取的文本中的单词数。我有一个问题,编译器找不到我的文件,但是我把这个文件放在项目文件夹中。我能做些什么?

#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;
}
4

2 回答 2

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;
}
...

注:未经测试

于 2013-06-20T21:34:14.820 回答
0

如果文件不在工作目录(程序所在的文件夹)中,则需要指定整个文件路径。在 Linux 机器上,这将类似于"/home/your-user-name/Desktop/text.txt". 对于 Windows 机器,它将是"c:\\your\\file\path\\text.txt". 如果文件在您的工作目录中并且程序仍然找不到它,那么它可能不喜欢文件名中的空格。尝试命名它CProgramming.dat,看看是否有效。

于 2013-06-20T21:15:45.363 回答