C语言文件操作中,二进制操作与文本操作 有什么区别?

越详细越好,谢谢大家~
2024-11-15 22:23:25
推荐回答(2个)
回答1:

摘录的,你看看吧,希望有帮助!!

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

  ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASC码:  00110101 00110110 00110111 00111000
     ↓     ↓    ↓    ↓
十进制码: 5     6    7    8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。

  二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。
一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符'/n',而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。

回答2:

从我的blog里面摘出来的:

将数据存储在文件中时,可以采取存储为文本格式或者是二进制格式。文本格式指的是将所有内容,甚至数字都存储为文本,比如将1.235e+04存储为文本格式时,将存储该数字包含的9个字符,这需要将浮点数的计算机内部表示转换为字符格式,<<插入运算符可以完成这些功能。二进制格式指的是存储值的计算机内部表示,不存储字符而是该浮点数的64位double表示。当如对于字符来说,二进制和文本是一样的。但是对于数字来说,二进制和文本表示是有很大差别的。两者各有优点,文本格式便于读取,可以很方便的将文本文件从一个计算机系统转移到另外一个计算机系统。二进制格式对数字来说比较精准,不会有转换误差或者舍入误差,以二进制格式保存数据的速度更快,因为它不需要转换,并且可以大块的存储数据。通常二进制格式占用的空间更小,然而如果另一个系统使用另外一种内部表示,怎可能无法将数据传输个该系统。