caf*_*caf 70
您应该"r"
用于打开文本文件.不同的操作系统存储文本的方式略有不同,这将执行正确的翻译,因此您无需了解本地操作系统的特性.例如,"\n"
无论代码在何处运行,您都会知道换行符总是显示为简单换行符.
"rb"
如果您打开非文本文件,则应该使用,因为在这种情况下,翻译不合适.
Alo*_*hal 28
在Linux和Unix在一般情况下,"r"
和"rb"
是相同的.更具体地说,FILE
通过fopen()
文本模式和二进制模式获得的指针在Unix上的行为方式相同.在Windows上,通常,在使用多个字符表示" 换行符 "的系统上,以文本模式打开的文件就像所有这些字符只是一个字符一样'\n'
.
如果你想可移植性读/任何系统,使用写文本文件"r"
,并"w"
在fopen()
.这将保证文件的正确写入和读取.如果您要打开二进制文件,请使用"rb"
和"wb"
,以便不幸的换行符不会弄乱您的数据.
请注意,底层系统为您执行换行转换的结果是您无法使用fseek(file,0,SEEK_END)确定可以从文件中读取的字节数.
最后,看看文本和二进制I/O有什么区别?在comp.lang.c常见问题解答.