当前正在尝试创建一个功能,以计算美国宪法中任何给定单词的数量。在最初的构建中,直到我尝试运行它时,它才让我知道任何警告或错误,然后出现了许多没有道理的错误。我不太擅长编码,并且有些沮丧。
代码是
#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;
}
然后是很多语法错误。
我觉得自己不称职...我不知道为什么会出现这些错误或如何解决这些错误。
答案 0 :(得分:1)
file
。line
和start
变量的唯一出现是声明。您不会在其他任何地方使用它们。因此,警告。strlen()
函数,您需要#include <string.h>
包括相关的头文件进行前向声明。有关更多信息,请参见cppreference strlen。scanf("&s",word);
,而不是scanf("%s",word);
。由于&s
不需要参数,因此编译器会警告您。fclose()
函数应该传递一个指向FILE
的指针,而不是包含文件路径的字符串。就是您最有可能是想说fclose(file)
-关闭FILE
调用返回的fopen()
指针。printf
的使用无效。要打印单词,请在格式字符串中使用%s
printf格式说明符。有关更多信息,您可以查看cppreference printf。您的代码也:
strlen(word)
循环中的第一个while
出现时访问未初始化的内存。while(strlen(word) < MIN_WORD_LENGTH || strlen(word) > MAX_WORD_LENGTH);
没有任何意义-它不是一个无限循环。word = fgetc(file)
分配给数组类型,这是不可能的(并且没有意义)。 fgetc()
函数的返回值为int
-您应将其保存在int
变量中。word == '\n'
正在将数组的地址与字符进行比较。main
之后从return count;
返回,并且不执行下面的代码。我相信您的代码有太多错误,无法帮助我。对于初学者来说,Stackoverflow并不是一个好地方-我认为这是一个提出特定编程问题的论坛,而不是解释该语言基本用法的复杂性。为了简化和加快使用C编程语言的步伐,建议您从更简单的任务和示例入手,这可以帮助您学习使用C语言的经验并为您提供指导。从小处开始,从大处结束。
答案 1 :(得分:0)
我收到的错误与您所描述的有所不同。要解决隐式声明错误,您需要更多的头文件:
#include <stdio.h>
#include <string.h>
FILE * file = ...它说这是一个未使用的变量?我认为不需要定义文件,当我尝试在其他地方定义文件时,它说它仍然是未使用的变量。
我收到一个完全不同的错误,说未声明FILE
。已通过以上#include
条解决。
代码说,“ line”和“ start”都是我试图在上面定义它们的同一行中的未使用变量。
此错误基本上表示它的意思。您可能忘记了在算法中使用这些变量。如果您真的不需要它们,请将它们注释掉。
scanf(“%s”,word); -它说对此有太多争论。我以为我在这一行上只有一个论点?
您的实际代码中有一个&
,应该有一个%
。
if(word == \ n);从不兼容的指针类型传递fclose参数-为什么在这里显示出来?
对我来说,此错误是“指针与整数之间的比较”。您将word
声明为数组,但似乎将其视为字符和字符。
有两个关于“格式参数过多”的警告,其中有两个......
printf
并不只是打印其参数。它的第一个参数必须是包含%
代码的格式字符串。每个其他自变量对应于这些%
代码之一。示例:
printf("The word ''%s''was found %d times in the US Constitution", word, count);