c语言怎么清空标准输入缓冲区,C语言中如何清空输入输出缓冲区

C语言中如何清空输入输出缓冲区

答案:5  信息版本:手机版

解决时间 2019-10-06 09:40

已解决

2019-10-05 13:54

C语言中如何清空输入输出缓冲区

最佳答案

2019-10-05 15:11

最简单的是用fflush()函数。

此函数包含在stdio.h头文件中,用来强制将缓冲区中的内容写入文件。

函数原型:int fflush(FILE *stream) ;

函数功能:清除一个流,即清除文件缓冲区.

常用场合:

一、ff(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃

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

二、scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结 束)。

① 遇空格、“回车”、“跳格”键。

② 遇宽度结束。

③ 遇非法输入。

键盘缓冲区就可能有残余信息问题。

scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中

解决就要在scanf()函数之后加个fflush(stdin)

三、写文件的时候 不会马上进行物理磁盘的文件读写,而是先写入缓存,当缓存中内容达到一定程度后再写

FILE *fp=fopen("a.txt","w");

fprintf(fp,"abcdef");

fflush(fp);

全部回答

1楼

2019-10-05 19:51

我暂时保留我的看法!

2楼

2019-10-05 18:23

1、flush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃

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

2、scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。

① 遇空格、“回车”、“跳格”键。

② 遇宽度结束。

③ 遇非法输入。

键盘缓冲区就可能有残余信息问题。

scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中

解决就要在scanf()函数之后加个fflush(stdin)。

3楼

2019-10-05 16:57

flush(stdin) flush(stdin)是用来清空输入缓冲区,通常是为了确保不影响后面的数据读取,例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行flush(stdin)。

例如

scanf("%s",tmp);

scanf("%c",&ch);

之间如果没有flush(stdin);那么ch中就接收的是换行了

表现为直接跳过了这一步

4楼

2019-10-05 16:29

最简单的是用fflush()函数。

此函数包含在stdio.h头文件中,用来强制将缓冲区中的内容写入文件。

函数原型:int fflush(FILE *stream) ;

函数功能:清除一个流,即清除文件缓冲区.

常用场合:

一、ff(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃

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

二、scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结 束)。

① 遇空格、“回车”、“跳格”键。

② 遇宽度结束。

③ 遇非法输入。

键盘缓冲区就可能有残余信息问题。

scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中

解决就要在scanf()函数之后加个fflush(stdin)

三、写文件的时候 不会马上进行物理磁盘的文件读写,而是先写入缓存,当缓存中内容达到一定程度后再写

FILE *fp=fopen("a.txt","w");

fprintf(fp,"abcdef");

fflush(fp);

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值