c - scanf 读取后输入缓冲区是否被清除?
问题描述
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>"
添加到缓冲区中的内容。第 2 个 scanf (*) 消耗初始输入和 4 个离开"<enter>"
用于下一个输入操作。
(*) 转换说明符"%d"
跳过可选的前导空格并(尝试)将输入的其余部分转换为整数(如果没有发生错误)。
推荐阅读
- r - 手动更改ggplot中堆叠条形图的顺序
- python - 从调用的函数更新 Tkinter 进度条(通过按钮单击),函数在单独的文档中
- android - Android - TextInputLayout 有一个设定的宽度 (160dp) 和一个提示。当我去看它时,宽度不是160dp。有什么我可以做的吗?
- r - dplyr 和中间管道消息
- django - Django:如何为一个项目赋予多个类别
- c++ - 对于具有参数化构造函数的类,创建一个不传递参数的对象
- algorithm - 是否可以对具有循环的图进行拓扑排序?
- java - 使用带有配置文件构建 openjpa-maven-plugin 的 Maven 进行编译不起作用
- javascript - ForceX 使用 DOM 元素作为坐标参考
- xml - Magento 2 如何在注册页面上添加简单的文本