c - 来自 "The C Programming Language"的代码如何工作?

标签 c eof kernighan-and-ritchie

我正在阅读“The C Programming Language (2nd ed.)”,在接近开始的时候,它有这样的例子:

while((c = getchar()) != EOF)
    if(c == '\n'){
        ++n1;

我可以在从文件中读取时看到它是如何工作的,并且我理解这种语法...但这只是从控制台读取——当从控制台输入字符时,如何发出文件结束信号?我正在使用 Windows XP ... MinGW 编译器... 不管怎样,这本书是为带有 EOF 按钮之类的早期系统编写的吗?

更新

好吧,我还有一个问题,这与文件结尾在 Windows 下的工作方式有关。

如果我只是 while(getchar()!=EOF);,那么我可以继续输入字符,直到我通过 ^Z 发出 EOF 信号。但是,我必须写一个换行符,然后按 ^Z,然后是另一个换行符...为什么它必须在自己的行上?

最佳答案

对于 EOF,Windows 使用 Ctrl-Z,而 UNIX 使用 Ctrl-D。参见 http://bytes.com/groups/c/217873-eof-windows , 和优秀的书籍选择。 :)

关于c - 来自 "The C Programming Language"的代码如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/886818/

相关文章:

node.js - 2021年Flash生命周期终止后,带有Flash Player的Electron App

c - 使用 EOF(CTRL+D) 重复输入的最后一行

c - 为什么编译 K&R2 第 1 章的最长行示例时会出现 "conflicting types for getline"错误?

c - K&R The C Programming Language 中的练习 1-18

c - K+R 2.4 : bus error when assigning (Mac OS)

c - 在 C 中使用数组的序列中出现频率最高的元素

计算具有 sin/cos LUT 的 tan

c - 在 C 中导航结构数组

c++ - eof() 函数不工作 C++ 陷入无限循环

c - 在函数调用中,什么是运算符,什么是操作数?