This question already has answers here:
Difference between int and char in getchar/fgetc and putchar/fputc?

(2个答案)


2年前关闭。




下面的程序可以在各种Solaris/Linux上正常运行,但不能在AIX上运行。
但是,如果我在AIX上将while(c!=EOF)替换为while(c!=0xff),它将完全正常运行。

有什么想法吗?我检查了AIX上的fgetc手册页,它应该返回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;
}

最佳答案

fgetc 的返回值是int而不是char。所以改变

char c;


int c;

关于c - fgetc无法识别EOF ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3977223/

10-12 15:59