这是程序:
#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 (space) 2 (space) 3 (space) 4 (space)(\n) 它读取直到 (\n) 并且 \n 将保留在缓冲区中。
如果我输入如下:1(然后按enter)2(然后按enter)3(然后按enter)4(然后按enter)。运行并scanf()
读取输入缓冲区 = 1(\n)2(\n)3(\n)4(\n)(\n)。
在这两种情况下,scanf()
跳过换行符、空格并尝试读取int
.
但是如果我输入 1 (然后按enter)(然后按enter)...scanf()
如果我继续按 ,则永远不会运行enter。
我的问题是:什么触发scanf()
?它只会在它知道所有正确的东西%d
都放在缓冲区中之后运行,然后如果用户按下回车就运行?