C 我的代码中有多个错误,我不明白

C 我的代码中有多个错误,我不明白,c,C,目前正试图建立一个计算美国宪法中任何给定单词数量的函数。在初始构建时,直到我尝试运行它,它才让我知道任何警告或错误,然后出现了许多没有意义的错误。我不太擅长编码,有点沮丧 代码是 #include <stdio.h> #include <stdlib.h> #define MAX_WORD_LENGTH 32 #define MIN_WORD_LENGTH 5 int main() { FILE *file = fopen("F:\\The_US_Constit

目前正试图建立一个计算美国宪法中任何给定单词数量的函数。在初始构建时,直到我尝试运行它,它才让我知道任何警告或错误,然后出现了许多没有意义的错误。我不太擅长编码,有点沮丧

代码是

#include <stdio.h>
#include <stdlib.h>
#define MAX_WORD_LENGTH 32
#define MIN_WORD_LENGTH 5

int main() {
    FILE *file = fopen("F:\\The_US_Constitution.txt", "r");
    char word[32];
    const char *line;
    const char *start = NULL;
    int count = 0;

    while(strlen(word) < MIN_WORD_LENGTH || strlen(word) > MAX_WORD_LENGTH);
    printf("Enter a word: ");
    scanf("&s",word);

    if(strlen(word) >= MIN_WORD_LENGTH && strlen(word) <= MAX_WORD_LENGTH)
        while((word = fgetc(file)) != EOF){
                if (word == '\n')
                    count++;
            }
        return count;

        fclose("F:\\The_US_Constitution.txt");
        if(count > 0)
            printf("The word ''",word,"''was found %d times in the US Constitution", count);
        else
            printf("The word ''", word, "''was not found in the US Constitution");

    return EXIT_SUCCESS;
}
文件*文件=。。。它说这是一个未使用的变量?我不认为该文件需要定义,当我试图在别处定义它时,它说它仍然是一个未使用的变量。 代码说“line”和“start”都是我试图定义它们的同一行中未使用的变量。 当单词 我觉得自己无能……我不知道为什么会出现这些错误,也不知道如何修复它们

编译器会警告未使用的变量,因为编译器看不到您在其他任何地方使用该变量文件。 行和开始变量的唯一引用是声明。你不能在其他任何地方使用它们。因此发出警告。 要使用strlen函数,您必须通过包含相关头文件来向前声明它。有关更多信息,请参阅。 您的代码有scanf&s,word;,不扫描%s,word;。因为&s不需要参数,编译器会警告您。 您忘记了在第3点中包含相关标题。 fclose函数应该传递一个指向文件的指针,而不是包含文件路径的字符串。最可能的意思是fclosefile-关闭调用fopen返回的文件指针。 您对printf的使用无效。要打印单词,请在格式字符串中使用%s printf格式说明符。有关更多信息,请参见。 您的代码还包括:

在第一个while循环中第一次出现strlenword时访问未初始化的内存。 循环whilesrlenwordMAX_WORD|u LENGTH;没有任何意义——这要么是一个无止境的循环,要么不是。 word=fgetcfile分配给数组类型,这是不可能的,也没有意义。函数的返回值是int-应该将其保存在int变量中。 word='\n'正在将数组的地址与字符进行比较。 您的代码将在返回计数后从main返回;不要执行下面的代码。 没有错误处理。
我相信你的代码有太多的错误,我无法帮助你。Stackoverflow对初学者来说不是一个好地方——我相信它是一个提出特定编程问题的论坛,而不是解释语言基本用法的复杂性。为了简化和加速您对C编程语言的探索,我建议您从更简单的任务和示例开始,这可以帮助您获得使用该语言的学习经验,并指导您继续学习。从小处开始,大处结束。

我遇到的错误与您描述的有些不同。要修复隐式声明错误,需要更多头文件:

#include <stdio.h>
#include <string.h>

您有一些小问题,您的include缺少stdio.h和string.h,这一行打印的字word在美国公司找到了%d次。。是错误的,因为在C中不能以这种方式连接单词,您可以使用sprintf,例如:sprintf tempstring,单词%s在美国宪法中被找到%d次,单词,计数;putstempstring;然后有一行:whileword=fgetcfile!=EOF这里你相信你得到了这个词,但是你使用的是fgetc,它只得到一个字符,一次只解决一个问题,阅读错误消息。玩得开心。你有很多重大问题。前两个是,*文件未使用,因为在声明它之后,代码中不再引用它,这意味着它是一个不做任何事情的声明。您还打开了一个文件,但以后不再访问该文件,而是尝试关闭一个字符串变量,而不是打开的*文件。话虽如此,这不是一个有编号的问题列表的网站。这是一个问答网站——请注意,问题是单数的。如果你有多个问题要问,你需要创建多个问题来提问,而不是把它们全部放在这里。strlenword永远不能等于MAX_WORD_LENGTH,除非你声明char WORD[MAX_WORD_LENGTH+1];另一个一般注意事项是,文件I/O是最慢的操作之一。如果您要求搜索一个单词,然后每次重复读取文件
寻找匹配的时间,这不是最佳的或有效的。但对于一个练习来说还不错——加上宪法短约26.5K字节,因此没有明显的惩罚。但是,实际上,您可能希望将文件的内容存储在内存中,或者更好,只需将文件映射到mmap内存,就可以在内存中搜索任意次数,而无需触发任何额外的文件I/O。您可能会发现这一点很有帮助。只需提供要搜索的文件名作为第一个参数,例如argv[1]。例如,在宪法中,会议发生三次,国王发生一次,宪法中没有不称职的余地。见我在原始问题下的评论——这是另一个需要补充的问题。
printf("The word ''%s''was found %d times in the US Constitution", word, count);