0

Ch Standard Interpreter の使用中は、 getchar()1 行おきにのみ実行されます。

C:/> char a = getchar();
C:/> char b = getchar();
b
C:/> char c = getchar();
C:/> char d = getchar();
d

scanf("%c", &a)代わりに使用する場合も同じ問題があります。Vim では、ステートメントはスキップされます。

printf("\nType of Something\nA for SomethingA\nB for SomethingB "
        "\nC for SomethingC\n\nSelect (A,B,C) > ");
char letter = getchar(); // This statement gets skipped
return 0;
4

1 に答える 1

2

キーボードで「A」と入力するときは、まず「A」を押してから「ENTER」を押しますよね?そうgetchar()orscanf("%c", ....)は、「A」と「ENTER」キーからの改行文字の2文字を読み取るために取得します。

コードをループで使用する場合、または単に繰り返し使用する場合、最初の getchar() は前の入力から改行文字を読み取ります。

于 2012-03-04T06:15:37.010 に答える