c - 在基于 C 的语言中,EOF 是如何生成和解释的?

标签 c eof

#include <stdio.h>

int main(){
    int c, nl=0;

    while((c = getchar()) != EOF)
        if(c=='\n')
            nl++;
                
    printf("%d",nl+1);
    return 0;
}

在 Ubuntu 18.04、GCC 7.3.0 上

getchar()EOF 进行比较时,控制台上没有输出。它与其他角色配合得很好。使用 CTRL^D 会以“code 0”退出程序,控制台上不会有任何输出。我尝试在 bash 中运行它,但仍然没有输出。

输入:

line 1

line 2

line 3

line 4

line 5

预期输出:

5

实际输出:

program exited with code 0

最佳答案

在 *nix 系统上 EOFCtrl^D 生成,而在 Windows 系统上 EOFCtrl^Z< 生成。我假设你使用的是Windows系统。请参阅https://en.wikipedia.org/wiki/End-of-file

关于c - 在基于 C 的语言中,EOF 是如何生成和解释的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42296290/

相关文章:

c - 为什么 CTRL-D 没有用这个程序发出 EOF 信号?

c - 操作中的宏结果故障

有人可以解释一下这段涉及 free() 的代码实际上做了什么吗

c - getchar() 不会让控制台保持打开状态

Java中,Parser只解析一次数据。需要解析为eof

c++ - ifstream.eof() 在 C++ 中未评估为真

c - getpwnam 的奇怪行为

c - 组播程序丢失数据

c++ - 为什么我的输入文件的最后一行运行了两次?

Python 子进程在 .csv : 'unexpected eof' 上调用 bcp