楔子

#include <stdio.h>int main(int, char**)
{int a;while (true){fputs("please input an integer: ", stdout);scanf("%d", &i);printf("%d\n", a);}return 0;
}

这段代码会首先提示用户输入一个整数,然后等待用户输入(所谓等待的意思即是当前输入缓冲区数据为空,需要新的输入进来),如果用户输入的是整数,程序会输出该整数,一旦用户输入的不是整数(浮点数或者字母),假设scanf函数最后一次得到的整数是2,程序会陷入“please input an integer: 2”的死循环。这是因为scanf("%d", &a);只能接受整数,如果用户输入了字母,则这个字母会留在输入缓冲区中,因为缓冲中有数据,故scanf函数不会等待用户输入,直接就去缓冲中读取,可是缓冲中的却是字母,这个字母再次被遗留在缓冲中,如此反复,从而导致不停地输出“please input an integer: 2”。

如果是在windows平台下开发,且不考虑程序的可移植性,可以使用 vs 系列编译器为C标准所做的拓展,也即使用fflush(stdin)来清空输入缓冲区。

References

[1] 关于fflush(stdin)清空输入缓存流(C/C++) 新手必看!!

C 标准库 —— scanf(fflush(stdin))相关推荐

  1. scanf最好与fflush(stdin)配合使用

    鉴于scanf函数的复杂性,最好将fflush(stdin)函数放在scanf函数后.每次从键盘输入数据后,就将缓冲区清空.

  2. fflush(stdin)和fflush(stdout)和rewind(stdin)的区别和作用

    理解:fflush(stdin)和fflush(stdout)和rewind(stdin) 小结论(多谢网友zhao4zhong1为我解答疑难): 1.在每个最后不带\n的printf后面加fflus ...

  3. linux下c标准库位置,C 标准库 IO 使用详解

    其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数.输出参数和返回值,接下来才能开始设计具体的实现过程.C 语言标准库提供的接口功能很有限,不像 Pyth ...

  4. 全面、详细、通俗易懂的C语言语法和标准库

    文章目录 前言 变量 变量的性质 变量的声明和变量的定义 声明说明符 存储类型符 类型限定符 类型说明符 声明符 不完整类型 不完整类型的限制 灵活数组成员 变量的初始化和变量的赋值 表达式和运算符 ...

  5. C 标准库 - 参考手册

    C 标准库 - 参考手册 目录 C 标准库 - 参考手册 C 标准库 math.h 简介 库宏 库函数 C 标准库 stdlib.h 简介 库变量 库宏 库函数 C 标准库 assert.h 简介 库 ...

  6. C/C++ 误区:fflush(stdin)

    C/C++ 误区:fflush(stdin) 注:本文转自http://blog.chinaunix.net/u/32196/showart.php?id=250809 并非原创,收入本博,聊作记录. ...

  7. C++的iostream标准库介绍+使用详解(转)

    0 为什么需要iostream 我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所 以讨论此标准库是有必要的,它与C语言的 stdio库不同,它从一开始就 ...

  8. C++的iostream标准库介绍

    C++的iostream标准库介绍 0 为什么需要iostream 1 iostream: istream 和 ostream 2 fstream: ifstream 和 ofstream 3 str ...

  9. C语言中最常用标准库

    标准头文件包括: <asset.h>      <ctype.h>       <errno.h>       <float.h>   <limi ...

最新文章

  1. java时钟面板clock
  2. 关于Angular里给Component protected方法写单元测试的技巧
  3. [数据结构]对称矩阵和三角矩阵压缩公式
  4. 数据集市的建立方法_在集市上工作时如何建立专业网络
  5. Java中子类对象赋值给父类变量
  6. Android 高德获取经纬度工具类
  7. Excel 绘制 人口年龄结构树状图
  8. 让AI做作业:基于PaddleNLP-Taskflow的错别字单项测试
  9. 做了3年半测试员,薪资不到20K,今天,我辞职了…
  10. loj #6046. 「雅礼集训 2017 Day8」爷
  11. 人人网回归了!历史记录全保留!前任们的黑历史就要被重新翻开了
  12. unity人物转方向
  13. js控制URL地址的改变,以微信服务号的授权获取用户的昵称和头像为例
  14. R_circlize包_和弦图
  15. Task06:综合练习
  16. 中国电脑教育报:搜索引擎十年有多少故事
  17. 深圳IB学校哪家强?入学标准如何?
  18. 全面刨析VDS链销模式12大优势及下一个机会
  19. 人的核心竞争力,超过一半都来自不紧急的事
  20. 学习appium必备的避坑指南

热门文章

  1. Android Studio导入model
  2. Doris之故障恢复(重点)
  3. 查询hdfs的相对路径
  4. 找零程序Java_JAVA解惑--找零时刻
  5. CImage实现双缓冲最近邻插值
  6. static_cast, dynamic_cast, const_cast,reinterpret_cast探讨
  7. open cv+C++错误及经验总结(五)
  8. 机器视觉牛人及其相关领域分类科普
  9. 【OCR一】字符识别技术总览(转)
  10. 洛谷 P4390 [BOI2007]Mokia 摩基亚 解题报告