gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:00:36 24 4
gpt4 key购买 nike

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

代码是

#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;
}
  1. FILE *file = ... 它说它是一个未使用的变量?我认为不需要定义该文件,当我尝试在其他地方定义它时,它说它仍然是一个未使用的变量。
  2. 代码表明“line”和“start”都是我尝试定义它们的同一行中未使用的变量。
  3. while(strlen(word) < MIN_WORD_LENGTH ...函数 strlen 的隐式声明...我不知道我在这里做错了什么。我试图创建一个条件,使程序再次询问问题,如果输入单词的字符长度超出了这些参数。
  4. scanf("%s", 字); - 它说对此有太多争论。我以为这一行我只有一个论据?
  5. if(strlen(word))...函数 strlen 的声明不兼容。再说一次,我不知道我在这里做错了什么。
  6. if(单词==\n);从不兼容的指针类型传递 fclose 参数 - 为什么会出现在这里?
  7. 关于“格式参数太多”的 2 条警告,其中有两个括号...

然后出现很多语法错误。

我觉得自己无能...我不知道为什么会出现这些错误,也不知道如何修复它们。

最佳答案

  1. 编译器会警告未使用的变量,因为编译器看不到您使用变量 file其他任何地方。
  2. 唯一出现 linestart变量是声明。您不会在其他地方使用它们。因此发出警告。
  3. 使用strlen()您已通过 #include <string.h> 向前声明它的函数包括相关的头文件。有关更多信息,请参阅cppreference strlen .
  4. 您的代码有 scanf("&s",word); ,不是scanf("%s",word); 。因为&s不需要参数,编译器会警告您。
  5. 您忘记添加第 3 点中的相关 header 。
  6. fclose()函数应该传递一个指向 FILE 的指针,不是包含文件路径的字符串。 IE。最有可能你的意思是 fclose(file) - 关闭FILE调用 fopen() 返回的指针.
  7. 您对 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 - 我的代码中有多个错误,我不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59339972/

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