c语言 - 为什么使用 fopen() 模式 'b' (stdio.h) 当输出可以是非 ASCII 时?


使用

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

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

某些操作系统(通常名为"Windows")不能保证它们会完全按照您传入的方式读取和写入 ASCII。因此,在窗口上,它们实际上将 \r 映射到 。这在读取和写入 ascii 时是精细和透明的。但它会丢弃二进制数据流。基本上,如果您希望Windows完全按照您传入的方式忠实地读取和写入文件,请始终给窗口"b"标志。

在 ASCII 中输出时可能会发生某些转换(例如,当输出的字符为换行符时输出 neline+回车符) - 具体取决于您的平台。 使用二进制格式时不会发生此类转换

相关内容

  • 没有找到相关文章

最新更新