文本文件与二进制文件我的体会总结如下:
1.文本文件与二进制文件的区别存在于逻辑层面上,即文件的编码翻译方式不一,但是在磁盘上的物理文件,都是以二进制形式保存的。
2.在访问和读写文件时会才会产生两种文件的区分,用文本方式打开,用fgets,fputs之类的文件I/O访问就是文本文件,而用fread/fwrite等文件I/O访问就是二进制文件。
3.unix和DOS的文本文件的区分在于回车换行,unix是'/n'而DOS则是"/r/n",所以DOS文本输出到控制台时需要把"/r/n"转换成"/n"(控制台回车符是"/n"),而unix则不需要。
4.为什么unix中使用fopen时,字符b作为type的一部分实际上无用?参考3,这是因为这两种方式在读写文件时的操作是不一样的。二进制方式很简单,读文件时,会原封不动的读出文件的全部內容,写的時候,也是把內存缓冲区的內容原封不动的写到文件中。而文本方式就不一样了,在读文件时,会将换行符号CRLF(0x0D 0x0A)全部转换成单个的0x0A,并且当遇到结束符CTRLZ(0x1A)时,就认为文件已经结束。相应的,写文件时,会将所有的0x0A换成0x0D0x0A。由于DOS/Windows定义的换行符和C语言的不一致,C语言的标准输入输出函数适行读写文本文件时,就适行了CRLF->LF的转换。而Unix的定义和C语言的是一样的,就不必转换了。
二进制文件和文本文件--我的理解
最新推荐文章于 2022-03-31 03:16:16 发布