【问题标题】:fgetc is always returning value 1fgetc 总是返回值 1
【发布时间】:2013-01-17 22:22:04
【问题描述】:

有以下功能:

void readAndPrint(FILE * f) {
    int c;

    while(c = fgetc(f) != EOF) {
        printf("%d", c);
    }
}

在 main() 主体中,我使用以下代码来使用上述函数:

FILE * pFile;

pFile=fopen ("myfile.txt","r");

readAndPrint(pFile)

;

无论我在 myfile.txt 中输入什么,程序都会打印出来。 例如,对于 abc,打印出 111。

我知道函数中的 c 应声明为 int 以正确地将其与 EOF 进行比较。另外,我希望打印出文本文件中每个字符的 ASCII 集的 int 代码(97 表示 a,...)。我无法弄清楚为什么它会打印出'ones'......你知道原因吗?提前谢谢你。

【问题讨论】:

    标签: c printf eof fgetc getc


    【解决方案1】:

    (c = fgetc(f) != EOF) - 首先fgetc(f) != EOF 发生这种情况,结果10 分配给c。条件检查始终返回 TRUE(1) 或 FALSE (0)。

    while((c = fgetc(f)) != EOF)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2019-10-10
      • 2014-04-13
      • 2017-03-20
      • 2013-11-04
      • 2011-12-09
      相关资源
      最近更新 更多