设为首页 加入收藏

TOP

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

 

  三、 fwrite与fprintf的区别

  1. fprintf(fp, "%d", buffer); 是将格式化的数据写入文件

  fwrite(&buffer, sizeof(int),1, fp);是以二进位方式写入文件

  2. fprintf写文本文件,用记事本可以打开查看

  fwrite写二进制文件

  3. fprintf写入时,对于整数来说,一位占一个字节,比如1,占1个字节;10,占2个字节;

  所以文件的大小会随数据的大小而改变,对大数据空间占用很大。

  fwrite是按二进制写入,写入数据所占空间是根据数据类型来确定,所以二进制写入比格式化写入更省空间

  下面针对第三点,举例说明:

  * 对于1 2 3 4 5 ,五个整数,用fprintf写入时,占5个字节;而用fwrite写入时,占20个字节。

  #include

  #include

  int main(void)

  {

  FILE *fp = NULL;

  FILE *fw = NULL;

  int i = 0;

  fp = fopen("./fp.txt", "w");

  fw = fopen("./fw.txt", "w");

  for(i = 1; i < 6; i++)

  {

  fprintf(fp, "%d", i);

  }

  for(i = 1; i < 6; i++)

  {

  fwrite(&i, sizeof(i), 1, fw);

  }

  return 0;

  }

  结果:

  [root@f8s fwrite_fprintf]# ls -l *.txt

  -rw-r--r-- 1 root root 5 2014-02-11 14:36 fp.txt

  -rw-r--r-- 1 root root 20 2014-02-11 14:36 fw.txt

  [root@f8s fwrite_fprintf]#

  * 对于10000 20000 30000 40000 50000,这五个整数,用fprintf写入时,占25个字节;而用fwrite写入时,还是占20个字节。

  #include

  #include

  int main(void)

  {

  FILE *fp = NULL;

  FILE *fw = NULL;

  int i = 0;

  fp = fopen("./fp.txt", "w");

  fw = fopen("./fw.txt", "w");

  for(i = 10000; i < 60000; )

  {

  fprintf(fp, "%d", i);

  i = i + 10000;

  }

  for(i = 10000; i < 60000; i++)

  {

  fwrite(&i, sizeof(i), 1, fw);

  i = i + 10000;

  }

  return 0;

  }

  结果:

  [root@f8s fwrite_fprintf]# ls -l *.txt

  -rw-r--r-- 1 root root 25 2014-02-11 14:41 fp.txt

  -rw-r--r-- 1 root root 20 2014-02-11 14:41 fw.txt

  [root@f8s fwrite_fprintf]#

        

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

评论

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