Mac终端上的CTRL-D输出D字符
我在mac OS X机器终端上运行这个例子(来自Kernighan和Ritchie的C书第1.5.2节):
#include int main() { int c, nl; nl = 0; while((c = getchar()) != EOF) if(c == '\n') ++nl; printf("%d\n", nl); }
我运行应用程序并立即输入EOF字符CTRL-D
。 程序输出0D
并终止。 0是预期的输出,但额外的’D’来自哪里?
我看到了这个线程和这个常见问题 ,但找不到答案。
我打赌终端显示^D
(正常的插入符号)并将光标留在插入符号上,然后你的程序打印0\n
因为nl
是0覆盖插入符号。
在最终printf
之前添加sleep(5)
应该确认这一点。