首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么getchar()不能在控制台上识别返回为EOF?

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

Stack Overflow用户
提问于 2009-11-25 07:15:39
回答 5查看 11.1K关注 0票数 16

下面是我使用PellesC运行的一小段代码。

执行代码后,我在控制台中键入了几个字符,然后按enter键。

你能给我解释一下为什么printf("%ld\n", nc);行看起来没有被执行吗?因为没有输出写入控制台。

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
    long nc = 0;

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

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

我决定用K&R这本书彻底地学习C语言,我很尴尬地说,这个相当初级的例子把我难倒了。

EN

回答 5

Stack Overflow用户

发布于 2009-11-25 07:19:34

你是如何结束你的输入的,你使用的是什么系统?

如果你正在按一个“中断”或“终止”组合键,那么你很可能在你的进程打印之前就杀死了它。

如果您在unix上使用Ctrl-D或在windows上使用Ctrl-Z作为行首,那么这将发出“输入结束”的信号,而不会终止进程。

您还可以尝试从测试文件重定向输入。例如:

代码语言:javascript
复制
myprogram <input.txt
票数 4
EN

Stack Overflow用户

发布于 2009-11-25 07:23:37

在Windows上,CTRL-Z或F6都会发出文件结束的信号。

票数 4
EN

Stack Overflow用户

发布于 2009-11-25 07:19:46

“按enter键”?代码中的循环将继续迭代,直到到达文件结尾标记。“按enter”将不会导致EOF。如果要从键盘模拟EOF,请参阅终端的文档。例如,在Windows中,你必须点击Ctrl+Z才能生成EOF。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1793616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档