到底什么时候需要使用fflush?怎么网上搜不到答案?

xiuxiuzi 2005-06-06 05:17:11

void main()
{
char x[5] ;
int i ;

for(i=0;i<5;i++)
scanf("%c",&x[i]) ;

for(i=0;i<5;i++)
printf("%c",x[i]) ;
}

到底什么时候需要使用fflush?怎么网上搜不到答案?
这段代码就要加fflush(stdin),可为什么要加呢?
别说要清空缓冲区,我以前那么多的缓冲区没清过怎么都没碰到过错误?

能不能多给几段代码说清楚些,谢谢!
...全文
199 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jingyueid 2005-06-06
  • 打赏
  • 举报
回复
上面的那个狸子如果不使用fflush(stdin),那么即使i的接受值正确,b还是会接受到一个\n符号,如果sanf格式化失败,那么b就是接下来的第一个字符。如果不把缓冲区晴空掉,无论如何b都不会正确。
jingyueid 2005-06-06
  • 打赏
  • 举报
回复
#include<stdio.h>

int main(void)
{
int i,b;
scanf("%d", &i);
fflush(stdin);
b = getchar();
printf("i=%d\nb=%c\n",i,b);
return 0;
}

楼上的,fflush(stdin)会把标准输入里面的缓冲数据清除掉,scanf操作后,并没有从缓冲区中取出不可识别字符,回车符,而fflush()对于stdin单向文件流就会把缓冲区内的数据清楚掉。
megaboy 2005-06-06
  • 打赏
  • 举报
回复
fflush不是这样用的,它用于输出流,fflush(stdin)没有意义。

fflush作用也不是清空缓冲区,是把缓冲中未曾写入文件的内容写入文件,只有上一次操作是使用输出

缓冲区的时候fflush才起作用。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧