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

摘要:
在第二段中,首先打开一个名为test的文件。dat执行写入操作,向文件中写入10个数据,最后关闭文件。在第三段中,功能类似,只是文件名更改为test1.dat,文件打开模式更改为wb。第二段和第三段有什么区别?这就是w和wb的区别。w是以文本模式打开文件,wb是以二进制模式打开文件。在文本模式下打开文件时,fwrite函数每次遇到0x0A时都会在文件前面添加0x0A。不会添加其他内容。

大家常用到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)
回车键

  

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

免责声明:文章转载自《文本方式打开文件 二进制方式打开文件 , 到底有啥区别呢 实测说话》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Tomcat配置HTTPS方式生成安全证书thinkphp v5.1 开发笔记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Node.js_Buffer 缓冲区

Buffer 缓冲区 虽然 JavaScript 支持未操作,但是并没有 二进制数据 的原生 node 引入了 Buffer 类,用于操作二进制数据 是 V8 引擎的扩展,实际上是对内存的直接分配 每个元素大小是 1 字节 创建了一个 Buffer 后,它的大小就固定了 一旦你把内容复制到一个 Buffer 后,它就会以二进制的形式存储起来。 如果你需要添...

JS字符编码----ASCII,Unicode 和 UTF-8

转:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 1.ASCII 码 八个二进制位就可以组合出256种状态,这被称为一个字节(byte) 使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符...

js整数类型

<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <title>Documen...

【学习笔记】tensorflow图片读取

目录 图像基本概念 图像基本操作图像基本操作API 图像读取API 狗图片读取 CIFAR-10二进制数据读取 TFRecords TFRecords存储 TFRecords读取方法 图像基本概念 在图像数字化表示当中,分为黑白和彩色两种。在数字化表示图片的时候,有三个因素。分别是图片的长、图片的宽、图片的颜色通道数。那么黑白图片的颜色...

Qt5字符串编码转换学习

目录 1、通过Python3示例探索常用字符串编码 UTF8 ANSI Unicode 小结 2、Qt5中使用QTextCodec进行编码转换小结 1、通过Python3示例探索常用字符串编码 下面,我们通过Python3代码来了解一下字符串编码的小秘密: 首先,我们定义一个字符串aha123 aha123 = "啊哈123" 然后...

Python打包工具

当我们完成一个完整的项目,需要该项目文件中打包成分发包共享给他人或者上传到pypi社区以供他人下载。这就需要对该项目进行打包分发。 项目文件 这是一个已写好的项目文件包,叫做my_pkg,它的目录结构如下: tutorial/ my_pkg/ __init__.py main.py utils/...