好好爱自己!

c语言学习(4)

fflush  stdin 的使用

原文: https://www.cnblogs.com/CheeseIce/p/10630338.htmlc

 

------------------------------------

fflush()的作用是用来刷新缓冲区;

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃;stdin是standard input的缩写,即标准输入,一般是指键盘;标准输入缓冲区即是用来暂存从键盘输入的内容的缓冲区。

fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西强制打印到标准输出设备上。standard output 的缩写,即标准输出,一般是指显示器;标准输出缓冲区即是用来暂存将要显示的内容的缓冲区。

一:

复制代码
复制代码
 1 #include "stdafx.h"
 2 #include<stdlib.h>
 3 #include<stdio.h>
 4  
 5 #pragma warning(disable:4996)
 6  
 7 using namespace std;
 8  
 9 int _tmain(int argc, _TCHAR* argv[])
10 {
11     int a;
12     char c;
13     scanf("%d", &a);
14     c = getchar();
15  
16     printf("a=%d,c=%c", a, c);
17  
18     return 0;
19 }
复制代码
复制代码

二:

复制代码
复制代码
 1 #include "stdafx.h"
 2 #include<stdlib.h>
 3 #include<stdio.h>
 4  
 5 #pragma warning(disable:4996)
 6  
 7 using namespace std;
 8  
 9 int _tmain(int argc, _TCHAR* argv[])
10 {
11     int a;
12     char c;
13     scanf("%d", &a);
14     fflush(stdin);
15     c = getchar();
16  
17     printf("a=%d,c=%c", a, c);
18  
19     return 0;
20 }
复制代码
复制代码

解释:

对比上面的代码,代码一没有清空输入缓冲区,回车时,将123赋值给a,缓冲区剩下abc,接着执行getchar(),发现缓冲区有内容,就无需等待用户输入,直接读取了,将'a'赋给c。代码二执行到fflush(),清空缓冲区,getchar()发现缓冲区没有内容,需要等待用户输入,所以必须输入两次。

posted @   立志做一个好的程序员  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2018-08-16 vim 多窗口,多tab编辑
2018-08-16 【转】php中的会话机制(2)
2017-08-16 【转】三年后再反思我的" Java Web项目管理得失谈"
2017-08-16 java构造函数重载this(true)
2017-08-16 为什么用clojure作为storm 的主要开发语言
2017-08-16 php模拟并发
2017-08-16 【转】storm 开发系列一 第一个程序

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示