有如下函数:
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 = fgetc(f) != EOF)
- 这里首先 fgetc(f) != EOF
这种情况正在发生,结果 1
或 0
分配给 c
。条件检查始终返回 TRUE
(1
) 或 FALSE
(0
)。
执行 while((c = fgetc(f)) != EOF)
关于c - fgetc 总是返回值 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14666062/