阅读k&r(c book)并混淆第1章代码

0 c

#include <stdio.h>
/* copy input to output; 2nd version*/
main()
{
    int c;

    while ((c = getchar()) != EOF)
        putchar(c);
}
Run Code Online (Sandbox Code Playgroud)

这非常令人困惑......因为你永远不会逃脱while循环.我已经知道EOF是-1.我键入-1但它只是重新打印它.这是一个永无止境的循环.随着时间的推移,图书馆会发生变化,并且与图书的预期不同?当我说库我的意思是库中的putchar()/ getchar()...抱歉.

Pan*_*mar 11

EOF(文件结尾)如何工作?

EOF只是一个指定负值的宏.它不必是-1.您可以使用控制字符从命令行发出文件结束信号,通常是Windows系统的ctrl + z或POSIX系统的ctrl + d的组合.

当你写'-1'时,你不会写VALUE -1,而是写字符串{' - ','1'}

看看这里.