c - 阅读 k&r(c 书)并混淆第一章代码

标签 c

#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/

相关文章:

c - 为什么不引发异常?如果枚举大小小于 100 字节

c - 寻找从魔数(Magic Number)确定文件类型

c - C 中返回多个二维数组位置的函数不起作用

c - 如何在 c 中解决这个 fork() 示例,

c - 如何在 C 代码中找到变量/函数的声明?

c - 在 Linux C 程序中的非特权套接字(非原始套接字)上设置 TCP 选项

c - GDB [[Inferior 1 (process 2710) exited with code 06]] 奇怪的输出

c - c中无符号数的模加法

C:使用 RLIMIT_FSIZE 设置软限制的问题

c++ - 如何在 Linux 上用 C++ 计算 SHA-512 哈希值?