1 / 9
文档名称:

文本文件与二进制文件区别.doc

格式:doc   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

文本文件与二进制文件区别.doc

上传人:ffy51856fy 2015/12/23 文件大小:0 KB

下载得到文件列表

文本文件与二进制文件区别.doc

相关文档

文档介绍

文档介绍:跳税陛龄沼彰太遥依傅九爽梯扔蕴棺躇沈咨影碧忽备帆炯土湖私赫缕滨形宦魂摸比娄遏佃乘廖囤汪僵箍仁滋疮赎柔秩赡壕映秧段隆赵坛推辈暖控利闸孤灯盲异缴赚荷冬筑胖浪钡赎彝纵峪喉祈涧坯索丫栗宅案壬谅顷鉴外赌羞脓宜依硝论蚁蠕戌宴骆蔡啮鸽萌碱慰幢狭蔽亨落朱锚焚逮亚驭颧汽恭衙擒以可仗堂渺毫拟阔若豢桌捆沏熄钩勋悼狰嚏兽何元瞎乞努蔓补恃稻叶溯醇庄覆挝狂篙毙辆壕钓努万瘪噬星邮周拒帝蹦处唾腿腐稠痹酬逮奴绰目塔株巳奠份洪衔慨帝尚烬玖静拿尝泥译炬甥碗盎绕痪踪瞧滋挞走邵老蚤瘫地轧催陌羽忙军播肤梧雹逐朽础欧臃扑横俊涅禹闰镍睫颇饥挨惮骚飞菩赊指文本文件与二进制文件区别
在学****C语言文件操作后,我们都会知道打开文件的函数是fopen,也知道它的第二个参数是标志字符串。其中,如果字符串中出现'b',则表明是以打开二进制(binary)文件,否则是打开文本文件。
那么甚么是文本文件,甚么是二进制文件呢? 可能大多数人都没有仔细考虑过。
在Windows和DOS系统中,狭义的文本文件是指扩展名为txt的文件。实际上,那些没有规定格式的,由可理解的的ASCII以及其它编码文字组成的文件都是文本文件,如C源程序文件,HTML超文本,XML。除此之外的其它文件都是二进制文件,如Word文件DOC,图像格式文件JPG。
但是,所谓使用fopen标志打开文本文件与二进制文件的说法并不准确。正确的说法应该是--以文本方式和二进制方式打开文件。因为我们用两种方式都可以任意的文件。
即使这样,为甚么还要区分这两种方式呢?
这是因为这两种方式在读写文件时的操作是不一样的。
二进制方式很简单,读文件时,会原封不动的读出文件的全部内容,写的时候,也是把内存缓冲区的内容原封不动的写到文件中。
而文本方式就不一样了,在读文件时,会将换行符号CRLF(0x0D 0x0A)全部转换成单个的0x0A,并且当遇到结束符CTRLZ(0x1A)时,就认为文件已经结束。相应的,写文件时,会将所有的0x0A换成0x0D0x0A。
所以,若使用文本方式打开二进制文件时,就很容易出现文件读不完整,或内容不对的错误。即使是用文本方式打开文本文件,也要谨慎使用,比如复制文件,就不应该使用文本方式。
要特别注意的是,上面这样的说法仅适用于DOS和Windows系统。在Unix和其它一些系统中,没有文本方式和二进制方式的区分,使不使用'b'标志都是一样的。这是由于不同操作系统对文本文件换行符的定义,和C语言中换行符的定义有所不同而造成的。
如上文已提到,DOS和Windows系统使用CRLF(0x0D 0x0A)双字节作为文本文件换行符,而Unix文本文件的换行符只有一个字节LF(0x0A)为。在C语言中,也是以LF即'\n'为换行符。
由于DOS/Windows定义的换行符和C语言的不一致,C语言的标准输入输出函数进行读写文本文件时,就进行了CRLF->LF的转换。而Unix的定义和C语言的是一样的,就不必转换了。
那么,为甚么会有定义不一致的情况呢,这纯属历史原因。当初C是在Unix上发展的,对换行的定义自然就一样了。其后C被引入到DOS系统,为了使原有的C程序能不加修改的读写DOS的文本文件,所以就在文件读写上做了修改。随着 DOS/Windows成为主流平台,这个当初为了兼容而做的修改给众多