fgetc无法识别EOF

6
以下程序在多种 Solaris/Linux 版本上运行良好,但在 AIX 上无法运行。 然而,如果我将 while(c!=EOF) 替换为 while(c!=0xff),在 AIX 上它完全正常地运行。
有什么想法吗?我查看了 AIX 上的 fgetc man 页面,并且它应该返回 EOF 常量!
#include <stdio.h>
#include<unistd.h>
#include <string.h>
int main() {
char c;
  FILE *fp;
  fp = fopen("a.txt", "r");
     c=fgetc(fp);
     while(c!=EOF)
        {
        c=fgetc(fp);
        printf("%d",c);
        }

  fclose(fp);
return 0;
}

似乎AIX有无符号字符。 - Antti Haapala -- Слава Україні
1个回答

17

fgetc 函数的返回值是 int 而不是 char,因此需要更改代码。

char c;
int c;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接