fflush函数

来源:互联网 发布:移动数据终端 华为 编辑:程序博客网 时间:2024/06/05 00:11

函数名: fflush

 

  功 能: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件

 

  原型:int fflush(FILE *stream)

 

  程序例:

 

  #include <string.h>

 

  #include <stdio.h>

 

  #include <conio.h>

 

  #include <io.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 的返回值类型是int类型,那么这个int类型具体的返回是什么呢?

 

  返回值:

 

  如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打开时也返回0值。返回EOF指出一个错误。

 

  注意:如果fflush返回EOF,数据可能由于写错误已经丢失。当设置一个重要错误处理器时,最安全的是用setvbuf函数关闭缓冲或者使用低级I/0例程,如open、close和write来代替流I/O函数。