C语言笔记:fflush(stdin)和fflush(stdout)

一、scanf()接收数据详解

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:
(详见:https://blog.csdn.net/21aspnet/article/details/174326
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
键盘缓冲区就可能有残余信息问题。
scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中的,解决这个问题就需要在scanf()函数之后加个fflush(stdin)。

二、fflush(stdin)详解

1、fflush(stdin) 是清空输入缓冲区的意思。stdin就是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入。 用来清除标准输入设备的缓存(一般就是指键盘输入到缓冲区里的东西)。

2、在清除文件缓冲区时使用,文件以写方式打开时将缓冲区内容写入文件。

3、比如你写个程序只允许输入数字,然后就可以循环,如果你这时输入了一个字符,这时一个字符就是非法得了,一直保留在缓存空间里,如果不处理掉可能会照成死循环…这时你就可以用这个代码清除缓存。

三、fflush(stdout)与flush(stdin)比较

  • flush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃。
  • fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。

参考资料:
1.https://zhidao.baidu.com/question/11704430.html
2.https://zhidao.baidu.com/question/480633494.html

猜你喜欢

转载自blog.csdn.net/lic1697067085/article/details/122139909