当输出可以是非 ASCII 时,为什么要使用 fopen() 模式“b”(stdio.h)?

2023-12-04

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

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


某些操作系统(主要称为“windows”)不保证它们会按照您传入的方式读取和写入 ascii 文件。因此,在 Windows 上,它们实际上将 \r\n 映射到 \n。这在读写 ascii 时是精细且透明的。但它会破坏二进制数据流。基本上,如果您希望 Windows 完全按照您传入的方式忠实地读取数据并将数据写入文件,则始终为 Windows 提供“b”标志。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当输出可以是非 ASCII 时,为什么要使用 fopen() 模式“b”(stdio.h)? 的相关文章

随机推荐