Scanf读取后,输入缓冲区是否会被清除?

问题描述 投票:0回答:2

输入缓冲区是否会在 scanf 读数?

#include <stdio.h>

int main(void) 
{
    int a, b;
    scanf("%d", &a);//I inputted 3
    scanf("%d", &b);//I inputted 4
}

所以当我给输入 43 存在于输入缓冲区中?

c scanf buffer
2个回答
1
投票

所以当我输入4的时候,输入缓冲区里有3个吗?

不,3被消耗了。

你不能重新读取它(以int或其他方式)。

如果你输入 "3<enter>" 3被消耗掉了,而缓冲区只包含了 "<enter>". 然后输入 "4<enter>" 缓冲区中。第2次扫描f (*)消耗了初始输入和4个离开的 "<enter>" 用于下一次输入操作。

(*)转换说明符 "%d" 跳过可选的前导空格,并(尝试)将输入的其余部分转换为整数(如果没有发生错误)。


0
投票

那么当我输入4的时候,输入缓冲区里有3吗?

不,不是。

scanf() 读取(并消耗)标准输入,直到找到符合指定格式的输入(在你的例子中是一个整数)。该格式也会被转换和消耗。

© www.soinside.com 2019 - 2024. All rights reserved.