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

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)型,返回成功写入文件的数据项个数。

C语言标准描述如下:

1. The number of objects written successfully, which may be less than count if an error occurs.
2. If size or count is zero, fwrite returns zero and performs no other action.

4 示例

使用fwrite()函数将数组中的内容写入二进制文件,代码如下所示:

#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);
   }
   //第三次写文件
   if ((fwrite(i_arr, sizeof(int), (SIZE+12), fp)) != (SIZE+12))
   {
      printf("Failed to write file.\n");
      exit(1);
   }
   //关闭文件
   fclose(fp);

   return 0;
}

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

在这里插入图片描述

代码及运行结果分析:

  1. 第一次调用fwrite()函数,数组i_arr中的每个元素是一个数据项;
  2. 第二次调用fwrite()函数,数组i_arr整体是一个数据项;
  3. 第三次调用fwrite()函数,写二进制文件的数据项个数大于数组的元素个数,编译器会提示以下错误。
警告 C6385 从“i_arr”中读取的数据无效: 可读大小为“80”个字节,但可能读取了“128”个字节。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值