在C语言编程中什么时候需要用fflush(stdin)?
8个回答
2013-10-15
展开全部
fflush函数刷新一个流,可以用来防止内存地址已经占满,当把这个流指向用户标准输入(stdin)时,可以清除目前缓冲区中的内容,输入回车也会被清楚掉,例如,在scanf()之后使用fflush(stdin)是当输入缓冲区(内存)满了的时候,自动清除输入流缓冲区中所有数据,其实现在内存这么大,每次输入的数据只有几个字节,是几乎用不上的,多用上的地方是在嵌入式开发上面,因为每个固化芯片上一般只有几十K的空间,所以空间显得非常重要,此时就要用上了
2013-10-15
展开全部
首先要明白,从键盘输入的数据会先存到缓冲区,然后在存放到内存中。
但是数据存放到内存中之后,缓冲区的数据并没有释放。如果不给电脑一个清空缓冲区的命令就会造成输入无效的情况。所以需要用到fflush(stdin)释放缓冲区。
具体在C语言中主要表现在getchar()等从键盘单个或逐个数据读取的函数上。
但是数据存放到内存中之后,缓冲区的数据并没有释放。如果不给电脑一个清空缓冲区的命令就会造成输入无效的情况。所以需要用到fflush(stdin)释放缓冲区。
具体在C语言中主要表现在getchar()等从键盘单个或逐个数据读取的函数上。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、flush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。
2、scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
键盘缓冲区就可能有残余信息问题。
scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中
解决就要在scanf()函数之后加个fflush(stdin)。
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。
2、scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
键盘缓冲区就可能有残余信息问题。
scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中
解决就要在scanf()函数之后加个fflush(stdin)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-15
展开全部
在你接受键盘数据以后,如果你没有用清流函数进行释放内存,那么就有可能导致你开始输入的数据接受不到,而是接受了上上次的数据,所以一般在接收键盘输入的时候都会用到fflush(stdin),虽然有些数据你是可以确定一定能接收到,但是我们为了规范化和避免错误,都会写上fflush(stdin)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fflush(stdin)这个函数是清除内存缓存区用的,一般用在getchar()之后,接收到所有你想要的输入之后用这个函数清除掉其余的输入。比如回车字符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询