Cで単一の文字をスキャンする方法 [重複] 質問する

Cで単一の文字をスキャンする方法 [重複] 質問する

C の場合: ユーザーから char を取得しようとしていますscanfが、プログラムを実行すると、ユーザーが何かを入力するのを待機しません...

コードは次のとおりです:

char ch;
printf("Enter one char");
scanf("%c", &ch);
printf("%c\n",ch);

なぜ動作しないのですか?

ベストアンサー1

変換%c指定子は先頭の空白を自動的にスキップしないため、入力ストリームに余分な改行がある場合 (たとえば、前のエントリから)、呼び出しはscanfそれをすぐに消費します。

この問題を回避する 1 つの方法は、書式文字列内の変換指定子の前に空白を入れることです。

scanf(" %c", &c);

フォーマット文字列内の空白はscanf先頭の空白をスキップするように指示し、最初の空白以外の文字が変換指定子で読み取られます%c

おすすめ記事