为什么getchar()不能在控制台上识别返回EOF?

我在下面有一小段代码,我正在使用PellesC运行。

当代码执行并且我在控制台中输入了几个字符时,我按下回车键。

你能解释一下为什么这printf("%ld\n", nc);条线似乎没有被执行?因为没有输出写入控制台。

#include <stdio.h>int main(void){
    long nc = 0;

    while(getchar() != EOF)
    {
        ++nc;
    }

    printf("%ld\n", nc);}

我决定使用K&R书彻底学习C,我很尴尬地说这个相当基本的例子让我难过。

为什么getchar()不能在控制台上识别返回EOF?

慕桂英4014372
浏览 599回答 3
3回答

哔哔one

按Enter键实际上不会导致EOF(“文件结束”)。你必须表明你已完全提供输入;&nbsp;在Unix上你通常按下来做CtrlD。在Windows上我相信它CtrlZ接着是输入,但我真的不确定。

阿波罗的战车

您是如何结束输入的,以及您使用的系统是什么?如果您正在使用“中断”或“终止”控制键组合,那么您可能会在打印之前终止您的进程。如果您在unix上使用Ctrl-D或在Windows上的一行开头使用Ctrl-Z,那么这将指示“输入结束”而不会终止进程。您还可以尝试从测试文件重定向输入。例如:myprogram&nbsp;<input.txt
打开App,查看更多内容
随时随地看视频慕课网APP