c语言 - 扫描读取后输入缓冲区是否被清除?



读取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()从标准输入读取(并使用),直到找到指定格式的匹配项(在本例中为整数)。该格式也会被转换和使用。

相关内容

最新更新