我有这个程序,我希望它在我每次输入一个字符时递增 1 并打印我的计数器的值
#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 版本上运行该程序。
最佳答案
终端输入一般是line buffered .当您按 ENTER 时,您的程序只会获取要处理的输入。如果您键入多个字符,您将针对您输入的每个字符(加上换行符本身)获得一行输出,因为 getchar()
按顺序返回每个字符。
关于c - getchar() 函数绕过一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846969/