为了账号安全,请及时绑定邮箱和手机立即绑定

c编程中fflush(stdin)的用法是什么

c编程中fflush(stdin)的用法是什么

C
繁华开满天机 2019-08-05 15:33:35
c编程中fflush(stdin)的用法是什么我有以下程序#include <stdio.h>#include <stdlib.h>int main(){    char ans[8];     int i;     for(i=1;i<=3;i++)     {         printf("\n What is the unit of traffic ?");         scanf("%s",ans);         fflush(stdin);         if(stricmp(ans,"Earlang")==0)         {             printf("\nAnswer is correct");             exit(1);         }         else             if(i<3)             printf("\n Try Again!\n");     }     printf("\n Nunit of traffic is Earlang:");}fflush(stdin)在这个程序中有什么用?
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

它不在标准C中,因此行为未定义。

一些实现使用它来清除stdin缓冲区。

从C11 7.21.5.2 fflush函数fflush只适用于输出/更新流,而不是输入流。

如果流指向输入流或未输入最近操作的更新流,则fflush功能会将该流的任何未写入数据传送到主机环境以写入该文件; 否则,行为未定义。


查看完整回答
反对 回复 2019-08-05
?
SMILET

TA贡献1796条经验 获得超4个赞


stdin在读取之前清除缓冲区。从手册

对于输出流,fflush()强制通过流的底层写入函数写入给定输出或更新流的所有用户空间缓冲数据。对于输入流,fflush()会丢弃从底层文件中提取但尚未被应用程序使用的任何缓冲数据。

注意:这是特定fflush()于Linux的,使用输入流的标准未定义,但是,大多数实现与Linux中的行为相同。


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 1806 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信