文本方式打开文件 二进制方式打开文件 , 到底有啥区别呢 实测说话

 

方法1: 直接参考,更全

1.fopen 中的w和wb的区别_赤云的博客-CSDN博客_fopen wb

fopen w和 w+属性的区别_modi000的博客-CSDN博客_fopen w+

 

方法2: 看我写的

大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件。
如以下C代码:
 
#include <stdio.h>
char buf[10] = {10,10,10,10,10,10,10,10,10,10};

FILE *fp = fopen("c:\\test.dat","w");
fwrite(buf,1,10,fp);
fclose(fp);

FILE *fp1 = fopen("c:\\test1.dat","wb");
fwrite(buf,1,10,fp);
fclose(fp1);

我们注意到,程序的第一段定义一个数组,每个分量的值为:10,等价的十六进制为0A。

第二段,先是打开一个文件test.dat进行写操作,再是把10个数据写入文件,最后关闭文件。

第三段,功能差不多,只是文件名换成了test1.dat,打开文件的模式换成了wb.

第二段和第三段有什么区别呢?我们看一下最后的文件内容:

test.dat:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A

test1.dat: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A

原因是为什么呢?这就是w 和 wb的区别,w是以文本方式打开文件,wb是二进制方式打开文件,以文本方式打开文件时,fwrite函数每碰到一个0x0A时,就在它的前面加入0x0D.其它内容不做添加操作。

   

Bin
(二进制)
Oct
(八进制)
Dec
(十进制)
Hex
(十六进制)
缩写/字符
解释

                                                                                                              

0000 1010
012
10
0x0A
LF (NL line feed, new line)
换行键
0000 1011
013
11
0x0B
VT (vertical tab)
垂直制表符
0000 1100
014
12
0x0C
FF (NP form feed, new page)
换页键
0000 1101
015
13
0x0D
CR (carriage return)
回车键

  

  也就是说,以文本方式打开一个文件,当写入数据时,遇到换行符,会自动加入回车符。

 

posted @ 2020-02-12 14:07  一匹夫  阅读(877)  评论(0编辑  收藏  举报