【C语法学习】17 - fwrite()函数

文章目录

  • 1 函数原型
  • 2 参数
  • 3 返回值
  • 4 示例

1 函数原型

fwrite():将ptr指向的内存空间中储存的数据块写入与指定流stream相关联的二进制文件中,函数原型如下:

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

2 参数

fwrite()函数有四个参数:

  1. 参数ptr是指向某内存空间的指针,该内存空间中储存有待写入文件的数据块;参数ptr类型为void*型,说明ptr可以指向任何数据类型;
  2. 参数size指定了每个待写入文件的数据项的字节大小,类型为size_t(unsigned int)型;
  3. 参数count指定了待写入文件的数据项的个数,类型为size_t(unsigned int)型;
  4. 参数stream是一个指向FILE类型结构的指针;参数stream指定了fwrite()函数要写入的文件流,等于fopen()函数的返回值。

3 返回值

fwrite()函数的返回值类型为size_t(unsigned int)型:

  1. 写入文件成功,返回成功写入文件的数据项个数,返回值应等于count;
  2. 写入文件失败,返回值小于count。

C语言标准描述如下:

1. fwrite returns the number of full items actually written, which may be less than count if an error occurs. 
2. Also, if an error occurs, the file-position indicator cannot be determined.

4 示例

以两种方式将数组中的内容写入二进制文件,代码如下所示:

#define SIZE 20

int main ()
{
   //
   int i_arr[SIZE] = { 0 };
   int i = 0;
   for (i = 0; i < SIZE; i++)
   {
      i_arr[i] = 2 * i;
   }
   //
   FILE* fp;
   if ((fp = fopen("1.dat", "wb")) == NULL)
   {
      printf("Failed to open file.\n");
      exit(1);
   }
   //
   if ((fwrite(i_arr, sizeof(int), SIZE, fp)) != SIZE)
   {
      printf("Failed to write file.\n");
      exit(1);
   }
   //
   if ((fwrite(i_arr, sizeof(i_arr), 1, fp)) != 1)
   {
      printf("Failed to write file.\n");
      exit(1);
   }
   //
   fclose(fp);

   return 0;
}

代码运行结果如下图所示:

【C语法学习】17 - fwrite()函数_第1张图片
代码及运行结果分析:

  1. 第一次调用fwrite()函数,数组i_arr中的每个元素是一个数据项;
  2. 第二次调用fwrite()函数,数组i_arr整体是一个数据项。

你可能感兴趣的:(C语言语法基础,c语言)