文本文件与二进制文件区别 r 与 rb 方式 w 与 wb方式(windows)

您所在的位置:网站首页 Rb与RB有区别吗 文本文件与二进制文件区别 r 与 rb 方式 w 与 wb方式(windows)

文本文件与二进制文件区别 r 与 rb 方式 w 与 wb方式(windows)

2024-05-28 09:04| 来源: 网络整理| 查看: 265

文件属于外存的范畴:

其实不管是文本文件还是二进制的文件,其本质都是以二进制的方式进行存储的,只是解释的方式不同罢了,文本文件是将原本的二进制解释称文本文件的方式(也就是ASCII的方式),而二进制就是存储的时候什么样子,打开就是什么样子。

1. < w 和 wb方式打开文件并进行写的操作的区别>

最常听到回答就是:

r 是以文本文件的方式打开并且是只读方式打开 rb 是以二进制的凡是打开并且是只读方式打开 w 是以文本文件的方式打开并且是写的方式 wb 是以二进制的方式打开并且是写的方式

既然有两种方式存在,那么必然有不同之处。以r 或 rb方式打开并且进行读取操作并没有什么区别;以w 或 wb方式打开文件进行写入操作也没有什么区别,仅仅只是在对’\n’这个字符的读和写上存在区别。

1.【将文件以w方式打开(即文本文件的方式)】

不论采用fprintf()函数或者是fwrite()函数进行将’\n’字符写进文件,因为计算机都是采用二进制进行数据的存储,所以会显示0D 0A (0D表示一个字节,采用的是16进制表示),因为是以文本文件的方式进行打开,并且进行写入,所以文本文件对’\n’单个字符的处理是将’\n’ 变成了’\r\n’两个字符,所以在存储的形式是0D 0A,也相当于是两个字节。

2.【将文件以wb方式打开(即以二进制的方式)】

不论采用fprintf()函数还是fwrite()函数进行将’\n’字符写进文件,此时的存储形式为0A, 只有一个字节,所以二进制文件对’\n’字符的处理是按照它本身进行处理。

3.【总结】

w 和 wb 方式的唯一区别仅仅在于对’\n’字符的处理: w方式写一个字符’\n’的时候,写进磁盘的是0D 0A(相当于写了在磁盘中写了两个字节)。 wb方式写一个字符’\n’的时候,写进磁盘的是0A(在磁盘中写了一个字节)。

2. < r 和 rb方式打开文件并进行读取操的区别>

1.【 将文件以r方式打开 】

不论采用fscanf()函数还是fread()函数进行读取,因为是以文本文件的方式进行打开,如果最初是采用w方式进行写进文件的,那么此时读取一个字符(也相当读取一个字节)的时候,将内存中的0D 连同下一个字节0A一块解释为’\n’,如果最初是以Wb方式写的,那么此时读取一个字符(也相当一个字节)的时候就仅仅只读一个0A,因为写进去的时候就只有0A。

2.【 将文件以rb方式打开 】

不论是采用fscanf()函数还是fread()函数进行读取时,因为是以二进制文件方式进行打开,所以当读取一个字符(也相当于一个字节的时候)事实上就读内存中的一个字节,所以如果当初写进文件采用的是w方式,内存中是0D 0A 但是此时只读一个0D,如果当初采用WB方式写入文件的此时也只读一个0A,因为只有0A。

3.【 总结 】

r 和 rb方式的区别也仅仅在于读取’\n’字符 r方式读取一个字符的时候,遇到0D会将后面0A这个字节连0D总共两个字节一起解释为一个字符’\n’ rb方式读取一个字符的时候,是正儿八经读一个字节,将读到的一个字节解释为字符



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3