我在下面有一小段代码,我正在使用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接着是输入,但我真的不确定。
阿波罗的战车
TA贡献1862条经验 获得超6个赞
您是如何结束输入的,以及您使用的系统是什么?
如果您正在使用“中断”或“终止”控制键组合,那么您可能会在打印之前终止您的进程。
如果您在unix上使用Ctrl-D或在Windows上的一行开头使用Ctrl-Z,那么这将指示“输入结束”而不会终止进程。
您还可以尝试从测试文件重定向输入。例如:
myprogram <input.txt
- 3 回答
- 0 关注
- 598 浏览
添加回答
举报
0/150
提交
取消