Enterまでのキー入力情報は、 stdinで管理される標準入力バッファ と呼ばれる内部の記憶場所に記憶されます。
こらは、stdinのストーリムで管理さ、fsacnfの入力用フォーマットの文字列で読み取られます。
標準入力バッファの内容がこの入力用フォーマットに合わないと、
fscanfの処理が終わります。
この時、標準入力バッファの中に、データが残ったままになっており、
次の入力ではすぐ入力待ちにならずに、このバッファの内容が読み取り対象になります。
場合によって、このバッファにデータが残っていると、次の入力に支障がある場合があります。
このような時のために、
このバッファの読み取り残しをクリアする
fflush(バッファを管理するストリーム)命令があります。
fflush関数は、stdio.hをインクルードすることで使えます。
次の実行例を行うプログラムで説明します。(赤が入力)
2つ入力>10 ab 1個入力できました 10, 2 2つ入力>0個入力できました 2つ入力>30 40 2個入力できました 30, 40
標準入力バッファの記憶内容を以下に示す。 (データが記憶される範囲をこの色で示す)