带有字符数组的 C 警告:“警告:数组下标的类型为‘字符’”

jjy*_*jyj 1 c arrays warnings types char

我很困惑为什么会发生这个错误。我的代码执行得很好,结果正是我想要的,但是在使用以下命令编译我的 c 文件时:“gcc -std=c99 -Wall -o assignment2 assignment2.c”

这是代码:

在此处输入图片说明

这是输出错误:

在此处输入图片说明

我只会使用它,但我确定它可能有一些原因为什么会显示错误,也因为如果编译时出现此警告,我的分配标记可能希望接受它。

Iha*_*imi 5

如果您i用于计数器,请使用int代替char

int i = 0;
Run Code Online (Sandbox Code Playgroud)

这将解决问题。

而且,c应该是 an int,因为fgetc()可以返回EOFwhich 是 an int,并且通常返回类型fgetc()int,因此您也应该使用intfor c

你的代码应该是

char word[500];
int i = 0;
int c;

while (((c = fgetc(fp)) != EOF) && (c != '\n')) {
    word[i++] = (char) c;
}
word[i] = '\0';
Run Code Online (Sandbox Code Playgroud)

  • @jjyj 这就是 *Stack Overflow* 的用途,提供帮助很有趣。但请记住,下次您应该发布实际代码而不是图像。 (2认同)