C语言清除scanf()缓存的案例讲解
2019/7/10 22:28:03
本文主要是介绍C语言清除scanf()缓存的案例讲解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
又重新过一遍C语言,感觉每次重学C语言都有不同的感受,遇到了一个问题,就是scanf()
这个问题,其实细究起来,也有很多可以值得深挖的,实际上每次细细的挖掘的话,都是对C语言的更透彻的认识.
那么下面我就对scanf()中清除输入缓冲区的方法讲解:
应用场景:我们使用多个scanf()的时候,如果输入缓冲区还有数据的话,那么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!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对找一找教程网的支持。如果你想了解更多相关内容请查看下面相关链接
这篇关于C语言清除scanf()缓存的案例讲解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用