getchar()函数绕过一个循环

时间:2013-05-30 22:37:48

标签: c

我有这个程序,我希望它增加一个并在每次给一个角色时打印我的计数器的值

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

1 个答案:

答案 0 :(得分:3)

终端输入通常为line buffered。当您按ENTER键时,您的程序仅获得要处理的输入。如果您键入多个字符,您将为输入的每个字符获取一行输出(加上换行符本身),因为getchar()会按顺序返回每个字符。