#include <stdio.h>
/* copy input to output; 2nd version*/
main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
}
这非常令人困惑...因为您永远无法逃脱 while 循环。我了解到 EOF 是 -1。我输入 -1 但它只是重印它。这是一个永无止境的循环。随着时间的推移,图书馆是否发生了变化并且与书中的预期有所不同?当我说库时,我指的是库中的 putchar()/getchar()...抱歉。
最佳答案
EOF(文件结尾)如何工作?
EOF 只是一个指定负值的宏。它不一定是-1。您可以使用控制字符从命令行发出文件结束信号,对于 Windows 系统通常是 ctrl+z 的组合,对于 POSIX 系统通常是 ctrl+d 的组合。
当你写 '-1' 时,你写的不是 VALUE -1,而是字符串 { '-', '1' }
看看here .
关于c - 阅读 k&r(c 书)并混淆第一章代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5260181/