我真的不明白: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/