1

私はこのプログラムを持っていて、文字を与えるたびに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... と表示されますが、文字などを入力すると、次の 2 つの数字 12,34,56,78 が出力されます。なぜそれが起こっているのですか??

gcc 4.6.3 Ubuntu 12.04 リリースでプログラムを実行しています。

4

1 に答える 1

3

端末入力は通常、ライン バッファリングされます。ENTER を押したときにのみ、プログラムは処理するための入力を取得します。複数の文字を入力すると、入力した各文字 (および改行自体) に対して 1 行の出力が得られ、getchar()各文字が順番に返されます。

于 2013-05-30T22:41:45.007 に答える