有以下功能:
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,...)。我无法弄清楚为什么它会打印出“那些”...你知道原因吗?提前谢谢。
答案 0 :(得分:9)
(c = fgetc(f) != EOF)
- 首先fgetc(f) != EOF
此情况正在发生,结果1
或0
已分配给c
。条件检查始终返回TRUE
(1
)或FALSE
(0
)。
执行while((c = fgetc(f)) != EOF)