プログラムは次のとおりです。
#include "stdio.h"
int main()
{
int minx, x, y, z;
printf("Enter four ints: ");
scanf( "%i %i %i %i", &minx, &x, &y, &z);
printf("You wrote: %d %d %d %d", minx, x, y, z);
}
次のように入力したら、1 2 3 4 と入力します (次に を押しenterます)。入力バッファを実行して読み取りますscanf()
= 1 (スペース) 2 (スペース) 3 (スペース) 4 (スペース)(\n) (\n) まで読み取り、\n はバッファに残ります。
次のように入力した場合: 1 (次に を押すenter) 2 (次に を押すenter) 3 (次に を押すenter) 4 (次に を押すenter)。入力バッファを実行して読み取りますscanf()
= 1(\n)2(\n)3(\n)4(\n)(\n)。
これらの 2 つのケースでscanf()
は、改行、空白をスキップし、int
.
しかし、 1 を入力すると (次に を押しますenter)(次に を押しenterます)...を押しscanf()
続けると、 は実行されませんenter。
私の質問は次のとおりです。何がトリガーされますscanf()
か? すべての正しい%d
ものがバッファに配置されたことを認識した後にのみ実行され、ユーザーがEnterキーを押した場合に実行されますか?