【问题标题】:C warning with char array: "warning: array subscript has type 'char'"带有 char 数组的 C 警告:“警告:数组下标的类型为 'char'”
【发布时间】:2017-08-07 00:54:32
【问题描述】:

我对为什么会发生此错误感到困惑。 我的代码执行良好,结果正是我想要的,但是在使用命令编译我的 c 文件时: "gcc -std=c99 -Wall -o assignment2 assignment2.c"

代码如下:

这是输出错误:

我只会使用它,但我确信它可能有一些原因显示错误,而且如果编译时出现此警告,我的赋值标记可能希望接受它。

【问题讨论】:

  • 为什么ichar

标签: c arrays types char warnings


【解决方案1】:

如果您使用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 这就是 Stack Overflow 的用途,提供帮助很有趣。但请记住,下次您应该发布实际代码而不是图片。
【解决方案2】:

i 应该被评估,以便 i < 500 被填满

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多