当前位置: 首页 > 工具软件 > fwrite > 使用案例 >

fwrite函数与fflush函数

敖硕
2023-12-01

以下内容源于网络资源的学习与整理,欢迎交流。

一、fwrite函数

1、函数原型

size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

2、函数作用

把 ptr 所指向的数组中的数据写入到给定流 stream 中,总共写入nmemb个元素,每个元素大小为size个字节。

3、参数与返回值含义

(1)参数含义

  • ptr -- 指向数据源(这个数据源,是指把哪里的数据写到给定流 stream 中)的指针。
  • size -- 指数据源中每个元素的大小,以字节为单位。
  • nmemb -- 指数据源中元素的个数,每个元素的大小为 size 字节。
  • stream -- 指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。

(2)返回值含义

  • 如果成功,则返回成功写入的元素个数。

4、代码示例

#include<stdio.h>
 
int main ()
{
   FILE *fp;
   char str[] = "This is runoob.com";
 
   fp = fopen( "file.txt" , "w" );
   fwrite(str, sizeof(str) , 1, fp );
 
   fclose(fp);
  
   return(0);
}

编译并运行上面的程序,这将创建一个文件 file.txt,它的内容如下:

This is runoob.com

二、fflush函数

1、函数原型

int fflush(FILE *stream)

2、函数作用

刷新流 stream 的输出缓冲区,或者说,fflush会强迫将缓冲区内的数据写回参数stream 指定的文件中。

For  output  streams, fflush() forces a write of all user-space buffered data for the given output or update stream via the stream's underlying write function.  

For input streams, fflush() discards any buffered data that has  been  fetched from the underlying file, but has not been consumed by the application.  The open status of the stream is unaffected.

3、参数与返回值含义

(1)参数含义

stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个缓冲流。

(2)返回值含义

如果成功,该函数返回零值。如果发生错误,则返回 EOF,且设置错误标识符(即 feof)。

4、代码示例

#include <stdio.h>
#include <string.h>
 
int main()
{
 
   char buff[1024];
 
   memset( buff, '\0', sizeof( buff ));
 
   fprintf(stdout, "启用全缓冲\n");
   setvbuf(stdout, buff, _IOFBF, 1024);
 
   fprintf(stdout, "这里是 runoob.com\n");
   fprintf(stdout, "该输出将保存到 buff\n");
   fflush( stdout );
 
   fprintf(stdout, "这将在编程时出现\n");
   fprintf(stdout, "最后休眠五秒钟\n");
 
   sleep(5);
 
   return(0);
}

编译并运行上面的程序,这将产生以下结果。在这里,程序把缓冲输出保存到 buff,直到首次调用 fflush() 为止,然后开始缓冲输出,最后休眠 5 秒钟。它会在程序结束之前,发送剩余的输出到 STDOUT。

启用全缓冲

这里是 runoob.com

该输出将保存到 buff

这将在编程时出现

最后休眠五秒钟

如果上面不理解,参考百科:fflush_百度百科 。

 类似资料: