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 版本上运行该程序。

4

1 回答 1

3

终端输入通常是行缓冲的。您的程序只有在您按 ENTER 时才会获得要处理的输入。如果您键入多个字符,您将获得输入的每个字符(加上换行符本身)的一行输出,并按getchar()顺序返回每个字符。

于 2013-05-30T22:41:45.007 回答