fgetc 不识别 EOF [英] fgetc does not identify EOF

查看:34
本文介绍了fgetc 不识别 EOF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

The program below runs fine on various Solaris/Linux flavours, but not on AIX. However, if I replace while(c!=EOF) with while(c!=0xff) on AIX it runs completely fine.

有什么想法吗?我检查了 AIX 上的 fgetc 手册页,它应该返回 EOF 常量!

Any thoughts? I checked the fgetc man page on AIX, and it should return the EOF constant!

#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;
}

推荐答案

的返回值fgetcint 不是 char.所以改变

char c;

int c;

这篇关于fgetc 不识别 EOF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆