2024年4月11日发(作者:)

使用文本文件txt进行数据存取的技巧总结相当

使用文本文件txt 进行数据存取的技

巧总结相当

使用文本文件(.txt)进行数据存取的技巧总结

由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方

仅用"--转--"标注,原作者略去,在此对所有原作者表示感谢!

特别说明:由于大家在I/O存取上以txt文件为主,且读取比存储

更麻烦(存储的话fwrite,fprintf基本够用),因此下面的讨论主要集中

在"txt文件

的读取"上。除了标注了"转"之外,其余心得均出于本人经验之结

果,欢迎大家指正、补充。

一.基本知识:

--转--

1.二进制文件与文本文件的区别:

将文件看作是由一个一个字节(byte)组成的,那么文本文件中的

每个字节

的最高位都是0,也就是说文本文件使用了一个字节中的七位来表

示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就

是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制

方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文

本文件也好,都是一连串的0和1,但是

打开方式不同,对于这些0和1的处理也就不同。如果按照文本

方式打开,在

打开的时候会进行translate,将每个字节转换成ASCII码,而以

按照二进制

方式打开的话,则不会进行任何的translate;最后就是文本文件

和二进制文

件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中

进行文本编辑

的时候,你进行编辑的最小单位是字节(byte);而对二进制文件

进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工

的方式对二进制文件进行编辑了。

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文

件两种:

ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对

应一个

字节,用于存放对应的ASCII码。例如,数5678的存储形式为:

ASCII码:00110101 00110110 00110111 00111000

↓↓↓↓

十进制码:5 67 8

共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程

序文件

就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是

按字符显示,因此能读懂文件内容。

二进制文件是按二进制的编码方式来存放文件的。例如,数5678

的存储形式为:00010110 00101110只占二个字节。二进制文件虽然

也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,

并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流

的开始和结束只由程序控制而不受物理

符号(如回车符)的控制。因此也把这种文件称作"流式文件"。

2.文本模式(textmode)和二进制模式(binarymode)有什么区别?

流可以分为两种类型:文本流和二进制流。文本流是解释性的,

最长可达255个字符,其中回车/换行将被转换为换行符"n",(如果以

"文本"方式打开

一个文件,那么在读字符的时候,系统会把所有的"rn"序列转成

"n",在写

入时把"n"转成"rn")。二进制流是非解释性的,一次处理一个

字符,并且不转换字符。

注: