带有字符数组的 C 警告:"warning: array subscript has type 'char'"
C warning with char array: "warning: array subscript has type 'char'"
我很困惑为什么会出现这个错误。
我的代码执行得很好,结果正是我想要的,但是在使用命令编译我的 c 文件时:
"gcc -std=c99 -Wall -o assignment2 assignment2.c"
代码如下:
这里是输出错误:
我只想使用它,但我确定它可能有某些原因会显示错误,而且如果编译时出现此警告,我的赋值标记可能想要接受它。
如果您使用 i
作为计数器,请使用 int
而不是 char
int i = 0;
这将解决问题。
而且,c
应该是一个 int
,因为 fgetc()
可以 return EOF
这是一个 int
,并且在一般来说,fgetc()
的 return 类型是 int
,因此你也应该对 c
使用 int
。
你的代码应该是
char word[500];
int i = 0;
int c;
while (((c = fgetc(fp)) != EOF) && (c != '\n')) {
word[i++] = (char) c;
}
word[i] = '[=11=]';
i
应该被评估,以便 i < 500
是 fullfilled
我很困惑为什么会出现这个错误。 我的代码执行得很好,结果正是我想要的,但是在使用命令编译我的 c 文件时: "gcc -std=c99 -Wall -o assignment2 assignment2.c"
代码如下:
这里是输出错误:
我只想使用它,但我确定它可能有某些原因会显示错误,而且如果编译时出现此警告,我的赋值标记可能想要接受它。
如果您使用 i
作为计数器,请使用 int
而不是 char
int i = 0;
这将解决问题。
而且,c
应该是一个 int
,因为 fgetc()
可以 return EOF
这是一个 int
,并且在一般来说,fgetc()
的 return 类型是 int
,因此你也应该对 c
使用 int
。
你的代码应该是
char word[500];
int i = 0;
int c;
while (((c = fgetc(fp)) != EOF) && (c != '\n')) {
word[i++] = (char) c;
}
word[i] = '[=11=]';
i
应该被评估,以便 i < 500
是 fullfilled