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

问题描述 投票:-3回答:2
#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以“代码0”退出程序,控制台上没有任何输出。我试过在bash中运行它但仍然没有输出。

输入:

第1行

第2行

第3行

第4行

第5行

预期产量:

5

实际产量:

program exited with code 0

c eof
2个回答
1
投票

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


1
投票

这些程序用于从文件中读取输入。所以在bash如果你这样做:./linecount < textfile.txt将给你输出5但我想编辑使用ctrl^D生成/触发EOF字符不能很好。(至少不是我的)。

© www.soinside.com 2019 - 2024. All rights reserved.