设为首页 加入收藏

TOP

Fwrite和fprintf之间的区别(一)
2014-04-06 17:40:28 来源: 作者: 【 】 浏览:252
Tags:Fwrite fprintf 之间 区别

  本文针对在工作中遇到的问题,并结合网上的资料作了总结,希望对各位有用。

  最近,在工作中,要做一个关键日志保存工具。在开发过程中,使用了函数fwrite写入到文本文件中,但是当用UE打开以后,却总是以十六进制的形式显示,

  即使进行转换,文本文件中,仍然有很多乱码,但是使用函数fprintf写入却不会出现上面的问题。

  一、 fwrite函数介绍

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

  功能:向文件写入一个数据块(以二进制形式对文件进行操作,不局限于文本文件)

  返回值:返回实际写入的数据块数目

  参数说明:

  1. buffer:要获取数据的地址;

  2. size:要写入内容的单字节数;

  3. count:要进行写入size字节的数据项的个数;

  4. stream:目标文件指针;

  注意:fwrite函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步

  #include

  struct mystruct

  {

  int i;

  char c;

  };

  int main(void)

  {

  FILE *stream;

  struct mystruct s;

  if((stream = fopen("./test.tmp", "wb")) == NULL)

  {

  fprintf(stderr, "cannot open output file.\n");

  return 1;

  }

  s.i = 2;

  s.c = 'A';

  fwrite(&s, sizeof(s), 1, stream); //写mystruct到文件中

  fclose(stream); //关闭文件

  return 0;

  }

  结果:

  [root@f8s fwrite_test]# cat test.tmp

   A/oot@f8s fwrite_test]#

  [root@f8s fwrite_test]# vim test.tmp

  ^B^@^@^@A/<87>^@

     

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇BrainFuck的编译器官方版发布 下一篇8.2.2 指针操作符

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: