今天,我几乎发疯了,因为我读取的字节大小与我尝试读取的xml文件的大小不匹配。

然后,当我检查正在读取的文件的内容时,我说它必须是一个讨厌的不可打印字符(\ r),并使用一个简单程序检查了该文件:\ r不存在。

我的问题是,为什么fgetc / fgets忽略\ r并仅选择\ n,并且如果我想读取\ r怎么办?

最佳答案

因为它们的目的是这样做。在Windows操作系统上,行尾是两个字符'\n'(换行)和'\r'(回车)的组合。

当您使用"r"模式打开文件时,这些文件都会全部转换为'\n',因此,如果您使用的是Windows操作系统,则每行都会缺少一个字符。

如果使用"rb"模式打开,它将不再将两个字符转换为'\n',并且您将能够读取它。这是"b"和非"b"模式之间的主要区别。

请注意,此功能允许文件在不同的平台上打开而无需关心,您只需在文本模式"r""w"中打开文件进行输出,而不必担心基础系统表示结尾的方式。线。

07-27 23:13