我很困惑,为什么会发生此错误。 我的代码执行罚款,结果是我想要的东西,但是,编译与命令我的C文件: “GCC -std = C99 -Wall -o assignment2 assignment2.c”C警告与字符数组:“警告:数组下标具有类型'字符'”
下面是代码:
下面是输出错误:
我只想用这个,但我敢肯定,它可能有一些原因的埃罗r显示,也因为我的任务标记可能想要接受它,如果编译时出现此警告。
我很困惑,为什么会发生此错误。 我的代码执行罚款,结果是我想要的东西,但是,编译与命令我的C文件: “GCC -std = C99 -Wall -o assignment2 assignment2.c”C警告与字符数组:“警告:数组下标具有类型'字符'”
下面是代码:
下面是输出错误:
我只想用这个,但我敢肯定,它可能有一些原因的埃罗r显示,也因为我的任务标记可能想要接受它,如果编译时出现此警告。
如果使用i
一个柜台,使用的int
代替char
int i = 0;
这将解决这个问题。
而且,c
应该是一个int
,因为fgetc()
可以返回EOF
这是一个int
,和一般的fgetc()
返回类型为int
,因此,你应该使用int
为c
了。
你的代码应该然后
char word[500];
int i = 0;
int c;
while (((c = fgetc(fp)) != EOF) && (c != '\n')) {
word[i++] = (char) c;
}
word[i] = '\0';
@KeineLust,代码有未定义行为,谢谢编辑。 –
噢,我正在尝试这个以及来自其他在线答案,并最终失去了这个小错误。非常感谢您为我指出这一点。 – jjyj
@jjyj这就是* Stack Overflow *的意思,它很有帮助。但请记住,下次应该发布实际代码而不是图像。 –
i
应当进行评估,以便i < 500
是fullfilled
为什么'i'一个'char'? –