c - fgetc 不识别 EOF

标签 c types aix eof fgetc

<分区>

下面的程序在各种 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/

相关文章:

c - container_of() 宏中的赋值运算符是如何工作的

c# - 如何将对象转换为c#类型

java - 我们可以使用类型名称作为变量吗

haskell - 单子(monad)绑定(bind)的显式签名约束

java - 管辖权政策文件未由受信任的签名者签名......?

c - 基于基本数组,无法访问数组元素?

c - limits.h 中定义的限制 FILENAME_MAX 是否适用于目录?

在 AIX 5.3 版上编译 perl >5.10

Java System.loadLibrary ("m") 在 AIX 6.1 上失败

c - 如何用斐波那契数列动态填充数组