使用C标准库的stdio.h,我了解到输出ASCII/text数据应该使用模式"w",而输出二进制数据则应该使用"wb"。但是为什么会有这样的区别呢? 无论哪种情况,我只是输出一个字节(char)数组,对吧?如果我在ASCII模式下输出非ASCII字节,程序依然会正确输出该字节。
一些操作系统,主要是名为“windows”的系统,不能保证它们会完全按照你传入的方式读写ASCII文件。因此,在Windows上,它们实际上将\r\n映射到\n。当读写ASCII时,这很好并且是透明的。但是,如果是二进制数据流,则会破坏它。基本上,如果您希望它忠实地按照您传入的方式读写数据到文件中,则始终为Windows提供“b”标志。
scanf
,它将作为空格跳过而忽略它。 - R.. GitHub STOP HELPING ICE