我在mac OS X机器终端上运行这个例子(来自Kernighan和Ritchie的C书第1.5.2节):
#include <stdio.h>
int main()
{
int c, nl;
nl = 0;
while((c = getchar()) != EOF)
if(c == '\n')
++nl;
printf("%d\n", nl);
}
我运行应用程序并立即输入EOF字符CTRL-D
。该程序输出0D
并终止。 0是预期的输出,但额外的&#39; D&#39;来自?
我看到了this thread和this faq,但找不到答案。
答案 0 :(得分:7)
我打赌终端显示^D
(正常的插入符号)并将光标留在插入符号上,然后您的程序正在打印0\n
,因为nl
是0覆盖插入符号。
在最终sleep(5)
之前添加printf
应该确认这一点。
答案 1 :(得分:0)
旧帖子,但我在另一篇帖子中找到了答案,对于任何新手,谷歌搜索了答案。在Mac终端stty -echoctl
贷方转到Jonathan Leffler
的完整帖子和说明