c 打开文件方式(二进制和文本)
2013-09-05 15:16
363 查看
c语言文件操作的一个问题:
c语言中打开文件有两种方式,一种是二进制方式,另一种是文本方式(ASCII码方式)。这两种方式有什么区别?(对于Linux这种只有一种文件类型的操作系统来说是没有区别的)
我们就以windows为例说说区别:
a.以文本方式打开文件,若将数据写入文件,如果遇到换行符'\n'(ASII 值为10,0A),则会转换为回车—换行'\r\n'(ASCII值为13,10,0D0A)存入到文件中,同样读取的时候,若遇到回车—换行,即连续的ASCII值13,10,则自动转换为换行符。
而以二进制方式打开文件时,不会进行这样的处理。
b.还有如果以文本方式打开文件时,若读取到ASCII码为26(^Z)的字符即0x1a,则停止对文件的读取,会默认为文件已结束,而以二进制方式读取时不会发生这样的情况。由于正常情况下我们手动编辑完成的文件是不可能出现ASCII码为26的字符,所以可以用feof函数去检测文件是否结束。
所以,由于存在上面的两个区别,我们在明确文件类型的时候,最好使用相对应的方式对文件进行打开。对于那些不明确文件类型的时候,最好使用二进制方式打开文件。
c语言中打开文件有两种方式,一种是二进制方式,另一种是文本方式(ASCII码方式)。这两种方式有什么区别?(对于Linux这种只有一种文件类型的操作系统来说是没有区别的)
我们就以windows为例说说区别:
a.以文本方式打开文件,若将数据写入文件,如果遇到换行符'\n'(ASII 值为10,0A),则会转换为回车—换行'\r\n'(ASCII值为13,10,0D0A)存入到文件中,同样读取的时候,若遇到回车—换行,即连续的ASCII值13,10,则自动转换为换行符。
而以二进制方式打开文件时,不会进行这样的处理。
b.还有如果以文本方式打开文件时,若读取到ASCII码为26(^Z)的字符即0x1a,则停止对文件的读取,会默认为文件已结束,而以二进制方式读取时不会发生这样的情况。由于正常情况下我们手动编辑完成的文件是不可能出现ASCII码为26的字符,所以可以用feof函数去检测文件是否结束。
所以,由于存在上面的两个区别,我们在明确文件类型的时候,最好使用相对应的方式对文件进行打开。对于那些不明确文件类型的时候,最好使用二进制方式打开文件。
相关文章推荐
- 文本与二进制方式打开文件的区别
- 文本与二进制方式打开文件的区别
- 文本与二进制方式打开文件的区别
- 文本文件和二进制文件;以文本方式打开和以二进制方式打开
- C语言文本方式和二进制方式打开文件区别
- 文本与二进制方式打开文件的区别
- C/C++中二进制与文本方式打开文件的区别
- [置顶] fopen等:文本方式和二进制方式打开文件的区别
- C语言文本方式和二进制方式打开文件区别
- 文本与二进制方式打开文件的区别
- 文本与二进制方式打开文件的区别
- 文本与二进制方式打开文件的区别
- C语言采用文本方式和二进制方式打开文件的区别分析
- C/C++中二进制与文本方式打开文件的区别
- C语言文本方式和二进制方式打开文件区别
- C语言采用文本方式和二进制方式打开文件的区别分析
- 文本与二进制方式打开文件的区别
- 文本与二进制方式打开文件的区别
- C语言文本方式和二进制方式打开文件区别
- 文本与二进制方式打开文件的区别