我真的不明白:fflush()函数的用法,我能找到这个函数的一个好的实现吗我读了一些关于它的资料,但是我仍然不能很好地理解它,实际上我想知道这个函数真正做什么?

最佳答案

知道它做什么的最好方法是
7.21.5.2 fflush功能
简介

#include <stdio.h>
int fflush(FILE *stream);

说明
如果stream指向没有输入最新操作的输出流或更新流,fflush函数将导致该流的任何未写入数据被传递到主机环境中,并写入文件;否则,行为未定义。
如果stream是空指针,fflush函数对上面定义了行为的所有流执行此刷新操作。
退货
fflush函数设置流的错误指示器,如果发生写入错误,则返回EOF,否则返回零。
所以基本上,库I/O函数使用缓冲区,fflush()将数据从缓冲区移动到物理文件,这就是为什么从上面可以理解fflush(stdin)是未定义的行为,因为fflush()只为输出流定义。
上面的意思是,对输出流的写操作不会立即执行,它们会被缓冲,当您调用fflush()时,它们会被刷新到磁盘上,您不需要一直显式地fflush(),例如
fpritnf(stdout, "Example text\n");

打印文本结束时的"\n"触发自动刷新,当调用“cc>”或退出程序时,刷新缓冲区。
您还可能注意到,即使对于输出流,也不会定义行为,除非最近的操作是output,否则无法刷新输入操作。

关于c - 使用fflush(FILE *流),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30383901/

10-12 15:02