首页 > 解决方案 > scanf 读取后输入缓冲区是否被清除?

问题描述

scanf读取后输入缓冲区是否被清除?

#include <stdio.h>

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

那么当我给输入43输入缓冲区中是否存在?

标签: cscanfbuffer

解决方案


那么当我输入 4 时,输入缓冲区中是否存在 3?

不,3被消耗掉了。

您无法重新阅读它(作为 int 或其他方式)。

如果您输入"3<enter>"3 被消耗并且缓冲区只包含"<enter>". 然后您键入"4<enter>"添加到缓冲区中的内容。第 2 个 scanf (*) 消耗初始输入和 4 个离开"<enter>"用于下一个输入操作。

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


推荐阅读