2

私は C プログラミングの完全な初心者で、質問があります。例として簡単なコードを示します。

#include <stdio.h>

int main( void )
{
    int x;
    printf( "Please type the number 10." );
    scanf( "%i\n", &x );

    if ( x == 10 )
        printf( "Thank you!\n" );


    return 0;
}

予想どおり、このプログラムをコンパイルして実行すると、端末に次のメッセージが表示されます。

"Please type the number 10."

次に入力を待つので、求められた数字 (10) を入力して を押しENTERます。問題は、一度押すENTERと新しい行に移動し、次の入力を待機することです。10 を入力して ENTER をもう一度押すと、実際に先に進みます (... "Thank you!" が表示されます)。

ENTERそのため、入力を受け入れるには 2 回押す必要があるようです。なぜこれが起こるのか誰か知っていますか?

4

2 に答える 2

8

への呼び出しの「\n」scanfです。それを削除すると、scanf要求した整数値をスキャンした後に返されます。

注: これは、scanf呼び出しの前にprintf.

于 2013-07-12T16:48:21.740 に答える
4

実際scanfにはプロンプトを表示しません。フォーマット指定子以外のものを含めると、入力を不正確に入力する必要があるため、ENTERもう一度押す必要があります。

これを変える :

scanf( "%i\n", &x );
        // ^
        // |  remove extra \n 

これに:

scanf( "%i", &x );
于 2013-07-12T16:49:46.867 に答える