4

使用 C 标准库stdio.h,我读到输出 ASCII/文本数据,一个应该使用模式"w"和输出二进制数据,一个应该使用"wb". 但为什么会有差异?

无论哪种情况,我都只是输出一个字节(char)数组,对吗?如果我在 ASCII 模式下输出一个非 ASCII 字节,程序仍然会输出正确的字节。

4

2 回答 2

8

一些操作系统——主要命名为“windows”——不保证它们会完全按照你传入的方式读写ascii文件。所以在windows上它们实际上将\r\n映射到\n。这在读取和写入 ascii 时很好且透明。但它会破坏二进制数据流。基本上,如果您希望它按照您传入的方式忠实地读取和写入数据到文件,则只需始终为 Windows 提供“b”标志。

于 2012-06-21T16:46:11.403 回答
0

以 ASCII 输出时会发生某些转换(例如,当输出字符为换行符时输出 neline+carriage-return)——取决于您的平台。使用二进制格式时不会发生此类转换

于 2012-06-21T15:29:53.007 回答