对于流。
int fflush(
FILE *stream
);
参数
- stream
为 FILE 结构的指针。
返回值
,如果成功刷新,fflush 返回 0 缓冲区。该值 0 还在指定的流没有缓冲区的用例返回或为只读处于打开状态。EOF 的返回值指示错误。
![]() |
---|
如果 fflush 返回 EOF,数据可能丢失的是由于编写失败。当设置密钥错误处理程序时,启用缓冲区与 setvbuf 函数或使用底层 I/O 实例例如 _open、 _close和 _write 而不是流 I/O 功能是最安全的。 |
备注
fflush 功能对于流。如果文件与 stream 为输出是打开的,就缓冲区内容与流关联的该文件的 fflush 编写。如果流为输入处于打开状态, fflush 清除内容缓冲区。fflush 对影响任何预先调用 ungetcstream。此外, fflush(NULL) 对于为输出打开的任何流。流保持打开状态。在调用之后。fflush 对未缓冲的流的效果。
缓冲区由操作系统维护通常,自动确定最佳时间将数据写入磁盘:当缓冲区已满,那么,当关闭了流,或者,当程序正常终止,无需关闭流。运行库的对磁盘函数可确保重要数据直接向磁盘写入而不是操作系统的缓冲区。不会复盖现有程序,可以通过链接程序的对象文件启用此功能与 COMMODE.OBJ。在产生的可执行文件,对 _flushall 编写任何缓冲区内容保存到磁盘。仅 _flushall 和 fflush 受 COMMODE.OBJ 的影响。
有关控件对磁盘功能的信息,请参见 流 I/O、 fopen和 _fdopen。
因此此功能锁定调用线程和是线程安全的。有关非固定版本,请参见 _fflush_nolock。
要求
功能 |
必需的头 |
---|---|
fflush |
stdio.h |
有关其他的兼容性信息,请参见中介绍的 兼容性 。
示例
// crt_fflush.c
#include <stdio.h>
#include <conio.h>
int main( void )
{
int integer;
char string[81];
// Read each word as a string.
printf( "Enter a sentence of four words with scanf: " );
for( integer = 0; integer < 4; integer++ )
{
scanf_s( "%s", string, sizeof(string) );
printf( "%s\n", string );
}
// You must flush the input buffer before using gets.
// fflush on input stream is an extension to the C standard
fflush( stdin );
printf( "Enter the same sentence with gets: " );
gets_s( string, sizeof(string) );
printf( "%s\n", string );
}
这是测试 这是 testThis
是测试 这是一 testEnter 每四个单词句子与 scanf 的:这是测试 已释放此 为 a test — 测试 在同一个句子与获取:这是测试 这是测试