fflush()函数的作用

fflush()函数的作用,第1张

fflush是一个计算机函数,功能是冲洗流中的信息,该函数通常用于处理磁盘文件。fflush()会强迫将缓冲区内的数据写回参数stream 指定的文件中。

扩展资料

其他用法:

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准]

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

printf("。。。。。。。。。。。")后面加fflush(stdout);可提高打印效率

拓展阅读

注意事项

C和C++的标准里从来没有定义过 fflush(stdin)。也许有人会说:“可是我用 flush(stdin) 解决了这个问题,你怎么能说是错的呢?”的确,某些编译器(如VC6)支持用 fflush(stdin) 来清空输入缓冲,但是并非所有编译器都要支持这个功能(linux下的gcc就不支持,经我的GCC4.6.2测试),因为标准中根本没有定义fflush(stdin)。

MSDN 文档里也清楚地写着:

fflush on input stream is an extension to the C standard (fflush 操作输入流是对C标准的扩充)。

以下是 C99 对 fflush 函数的定义:

int fflush(FILE *stream)

如果stream指向输出流或者更新流(update stream),并且这个更新流最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream指向的文件(如标准输出文件stdout)。否则,fflush函数的行为是不确定的。fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,flush函数会给那些流打上错误标记,并且返回EOF,否则返回0。

由此可知,如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用 fflush(stdin) 是不正确的。

1、fflush(stdin)是清空输入缓冲区的意思。stdin就是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入。 一般就是指键盘输入到缓冲区里的东西。

2、在清除文件缓冲区时使用,文件以写方式打开时将缓冲区内容写入文件。

例:

#include <conio.h>

#include <io.h>

#include <stdio.h>

#include <string.h>

void flush(FILE *stream)

int main(void)

{

FILE *stream

char msg[] = "This is a test"

/* create a file */

stream = fopen("DUMMY.FIL", "w")

/* write some data to the file */

fwrite(msg, strlen(msg), 1, stream)

clrscr()

printf("Press any key to flush DUMMY.FIL:")

getch()

/* flush the data to DUMMY.FIL without closing it */

flush(stream)

printf("\nFile was flushed, Press any key to quit:")

getch()

return 0

}

void flush(FILE *stream)

{

int duphandle

/* flush the stream's internal buffer */

fflush(stream)

/* make a duplicate file handle */

duphandle = dup(fileno(stream))

/* close the duplicate handle to flush the DOS buffer */

close(duphandle)

}

扩展资料

使用fflush的注意事项

1、MSDN 文档里也清楚地写着:fflush on input stream is an extension to the C standard (fflush 操作输入流是对C标准的扩充)。以下是 C99 对 fflush 函数的定义:int fflush(FILE *stream)

2、如果stream指向输出流或者更新流(update stream),并且这个更新流最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream指向的文件(如标准输出文件stdout)。

3、fflush函数的行为是不确定的。fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,flush函数会给那些流打上错误标记,并且返回EOF,否则返回0。

4、如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用 fflush(stdin) 是不正确的。

参考资料来源:百度百科—fflush(stdin)


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/26118.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-17
下一篇2023-02-17

发表评论

登录后才能评论

评论列表(0条)

    保存