【发布时间】:2015-07-20 04:08:41
【问题描述】:
我是 C 编程和 Ubuntu 的新手。我正在阅读 D.M Ritchie 的“The C Programming Language”,在那里我找到了以下代码:
#include <stdio.h>
int main()
{
int c;
int nc=0;
while((c = getchar()) != EOF)
{
nc++;
}
printf("%d Characters \n",nc);
return 0;
}
但在运行程序时,我输入“Hello”,然后 CTRL+D 两次 得到实际的字符数,即 5。
但是当我输入“Hello”然后CTRL+D 一次,什么都没有发生,终端仍然等待输入。
为什么?
【问题讨论】:
-
如果没有任何数据要刷新到
stdin,我认为CTRL+D会发送EOF。 -
@CoolGuy 我点击了上面的链接,发现 Veritas 的评论很有帮助。谢谢你的帮助。但是如果我在“Hello”之后按“ENTER”然后按 CTRL+D 一次,字符数变为 6。我认为除了“Hello”之外,“\n”是一个额外的字符。不是吗?
-
是的。这是正确的。请记住
EOF != '\n'。所以当你按下回车键时循环不会中断。 -
我现在尝试了以下代码 .... #include
int main() { char c; c=getchar(); while (c!= EOF) { putchar(c); c=getchar(); } 返回 0;上面的代码将输入显示为输出......在这里,当我按下“ENTER”时,循环会在按预期显示输出后中断。当 EOF!= "\n" 这是怎么回事?在这里我根本不用按CTRL+D!!
标签: c ubuntu terminal eof getchar