3

有以下功能:

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'......你知道原因吗?先感谢您。

4

1 回答 1

12

(c = fgetc(f) != EOF)- 这里首先fgetc(f) != EOF发生这种情况,结果1or0被分配给c. 条件检查总是返回TRUE( 1) 或FALSE( 0)。

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

于 2013-02-02T20:17:57.567 回答