我有这个程序,我希望它增加一个并在每次给一个角色时打印我的计数器的值
#include <stdio.h>
int main(void){
//Declarations
long nc;
//Instantiations
nc = 0;
while (getchar() != EOF){
++nc;
printf("%ld\n", nc);
}
return 0;
}
当循环启动时,如果我按下ENTER,我得到1,2,3,4,5 ......这没关系。但是如果我输入一个字符或其他东西,它会打印下两个数字12,34,56, 78。为什么会这样?
我在gcc 4.6.3 Ubuntu 12.04版本上运行程序。
答案 0 :(得分:3)
终端输入通常为line buffered。当您按ENTER键时,您的程序仅获得要处理的输入。如果您键入多个字符,您将为输入的每个字符获取一行输出(加上换行符本身),因为getchar()
会按顺序返回每个字符。