猿问

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

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)在这个程序中有什么用?


繁华开满天机
浏览 1807回答 3
3回答

墨色风雨

它不在标准C中,因此行为未定义。一些实现使用它来清除stdin缓冲区。从C11 7.21.5.2&nbsp;fflush函数,fflush只适用于输出/更新流,而不是输入流。如果流指向输入流或未输入最近操作的更新流,则fflush功能会将该流的任何未写入数据传送到主机环境以写入该文件;&nbsp;否则,行为未定义。

SMILET

它stdin在读取之前清除缓冲区。从手册页:对于输出流,fflush()强制通过流的底层写入函数写入给定输出或更新流的所有用户空间缓冲数据。对于输入流,fflush()会丢弃从底层文件中提取但尚未被应用程序使用的任何缓冲数据。注意:这是特定fflush()于Linux的,使用输入流的标准未定义,但是,大多数实现与Linux中的行为相同。
随时随地看视频慕课网APP
我要回答