R u*_*c k 3 c macos operating-system
直接离开K&R,我有
#include <stdio.h>
main() {
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
Run Code Online (Sandbox Code Playgroud)
我在Mac OS X上,所以我编译它,运行它,键入"12345",按Enter键换行换行(这是我猜的第六个字符)然后点击ctrl-D发送一个EOF.
东西打印出"6D".为什么D在那里?如何编写程序来计算"12345"中的5个字符而不是换行符?我应该在最后减去一个吗?如何让它停止打印D?
什么情况是,终端实际相呼应的控制d(并打印出来的^D),当你键入它,但那么你的程序覆盖了一些和换行该行.所以你的一位数字会覆盖^,但D留在那里.
如果您输入的字符数超过10个,或者通过在格式字符串末尾添加空格来更改代码("%ld \n"),那么您的程序将覆盖^D(尽管它仍然会被您的终端回显)