为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
慕桂英4014372 2019-08-28 14:58:50
我在下面有一小段代码,我正在使用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?
查看完整描述

3 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-08-28
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

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

如果您正在使用“中断”或“终止”控制键组合,那么您可能会在打印之前终止您的进程。

如果您在unix上使用Ctrl-D或在Windows上的一行开头使用Ctrl-Z,那么这将指示“输入结束”而不会终止进程。

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

myprogram <input.txt


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 598 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信