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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录

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_tunsigned int型
  3. 参数count指定了待写入文件的数据项的个数类型为size_tunsigned int型
  4. 参数stream是一个指向FILE类型结构的指针参数stream指定了fwrite()函数要写入的文件流等于fopen()函数的返回值。

3 返回值

fwrite()函数的返回值类型为size_tunsigned 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;
}

代码运行结果如下图所示

在这里插入图片描述
代码及运行结果分析

  1. 第一次调用fwrite()函数数组i_arr中的每个元素是一个数据项
  2. 第二次调用fwrite()函数数组i_arr整体是一个数据项。
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“【C语法学习】17 - fwrite()函数-CSDN博客” 的相关文章