问我想以一次一个字节的方式在文件和内存之间读写数字,而不是像fprintf和fscanf那样作为格式化字符。我该怎么做?
那样以格式化字符的方式。答你想要做的事情通常被称为“二进制” I/O。首先,确保你调用fopen时使用了"b"修饰符(例如, "rb"、“wb” 等;参见问题 12.38)。然后,使用&和sizeof运算符来处理你要传输的字节序列。通常,你希望使用fread和`fwrite`函数;参见问题 2.11 中的示例。
请注意,fread和`fwrite`并不一定意味着二进制 I/O。如果你以二进制模式打开文件,你可以对其使用任何 I/O 调用(例如参见问题 12.42 中的示例);如果你以文本模式打开文件,你也可以使用fread或`fwrite`如果它们方便的话。
最后,请注意二进制数据文件不是非常可移植;参见问题 20.5。
另请参见问题 12.40。