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
。