当前位置: 首页 > news >正文

C语言如何清除scanf()缓存


(1)清除缓存的函数是:

void safe_flush(FILE *fp)
{
	int ch;
	while( (ch = fgetc(fp)) != EOF && ch != '\n' );          
}

(2)然后我们在使用的时候,直接调用就可以了:

scanf("%d",&k);

safe_flush(stdin);

这样就可以清除缓存带来的问题了!


(3)案例演示

a.当我们不清除scanf所带来的危害的时候:

#include<stdio.h>
#include<string.h>

int main()
{
	int k;
	printf("请输入你的秘钥:(整数)");
	scanf("%d",&k);

	char c;
	printf("请输入一个字符:");
	c = getchar();

	printf("%d ",k);
	printf("%c ",c);


}


我们发现 我们输入一个整数的时候,就自动结束程序了,并且将输入的数值作为缓存给了字符c




然后我们清除缓存:

#include<stdio.h>
#include<string.h>
//用于清除回车键缓存的影响
void safe_flush(FILE *fp)
{
	int ch;
	while( (ch = fgetc(fp)) != EOF && ch != '\n' );
}
int main()
{
	int k;
	printf("请输入你的秘钥:(整数)");
	scanf("%d",&k);

	safe_flush(stdin);

	char c;
	printf("请输入一个字符:");
	c = getchar();

	printf("%d ",k);
	printf("%c ",c);


}

当我们输入整数之后,提示我们输入字符,显然消除了缓存



ok!


相关文章:

  • 通过XmlDocument读写Xml文档参考地址
  • Myeclipse使用hibernate的逆向工程
  • brew 更新
  • 安装vmare-tools——实现ubuntu与windows的互相复制与粘贴(无需共享文件夹)
  • SSH开发中解决mysql数据库的乱码问题
  • 靠谱助手 BlueStacks
  • 自定义日期类型转换器
  • JDK环境变量详细讲解
  • 2014年末最强悍IT学习视频教程分享
  • 搭建CAS单点登录服务器
  • Android应用开发相关下载资源(2014/12/14更新)
  • 在SQL Server中为什么不建议使用Not In子查询
  • Eclipse+超快的模拟器Genymotion开发Android应用(第一步:安装及配置Genymotion)
  • 光棍节这天,我终于在AppStore上线了
  • Eclipse+超快的模拟器Genymotion开发Android应用(第二步:集成Genymotion和eclipse)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • canvas 五子棋游戏
  • github指令
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • webpack+react项目初体验——记录我的webpack环境配置
  • 数据可视化之 Sankey 桑基图的实现
  • 微服务入门【系列视频课程】
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​批处理文件中的errorlevel用法
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (1)(1.13) SiK无线电高级配置(六)
  • (10)STL算法之搜索(二) 二分查找
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (33)STM32——485实验笔记
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十六)一篇文章学会Java的常用API
  • (状压dp)uva 10817 Headmaster's Headache
  • *** 2003
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .Net core 6.0 升8.0
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • @Pointcut 使用
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ IO.File ] FileSystemWatcher
  • [ JavaScript ] JSON方法
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [20190113]四校联考
  • [AIGC] Java 和 Kotlin 的区别
  • [AIGC] MySQL存储引擎详解
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)
  • [BZOJ2208][Jsoi2010]连通数
  • [C/C++随笔] char与unsigned char区别
  • [Codeforces] probabilities (R1600) Part.1