使用C标准库stdio.h,我读到输出ASCII /文本数据,应该使用模式"w"并输出二进制数据,应该使用"wb".但为什么差异呢?
在任何一种情况下,我只是输出一个字节(char)数组,对吧?如果我在ASCII模式下输出非ASCII字节,程序仍会输出正确的字节.
一些操作系统 - 大多数命名为"windows" - 并不能保证它们会像传入文件那样完全读取和写入ascii文件.因此,在Windows上它们实际上将\ r \n映射到\n.在读写ascii时,这很好而且透明.但它会废弃二进制数据流.基本上,如果您希望它能够按照您传递的方式忠实地读取和写入数据,那么它总是给Windows提供'b'标志.