读取scanf
后输入缓冲区会被清除吗?
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d", &a);//I inputted 3
scanf("%d", &b);//I inputted 4
}
那么当我给出输入时4
输入缓冲区中是否存在3
?
那么当我给出输入 4 时,输入缓冲区中是否存在 3?
不,3 被消耗掉了。
您不能重新读取它(作为 int 或其他方式)。
如果您输入"3<enter>"
则消耗 3,缓冲区仅包含"<enter>"
。然后键入添加到缓冲区"4<enter>"
。第二个扫描 (*) 消耗初始输入和 4 个离开"<enter>"
用于下一个输入操作。
(*) 转换说明符"%d"
跳过可选的前导空格,并(尝试)将输入的其余部分转换为整数(如果未发生错误)。
那么当我给出输入 4 时,输入缓冲区中是否存在 3?
不,不是。
scanf()
从标准输入读取(并使用),直到找到指定格式的匹配项(在本例中为整数)。该格式也会被转换和使用。