【发布时间】:2021-05-27 20:14:46
【问题描述】:
假设我有一个文件:
file.in:
3 3
我想读取其中写有fread的2个数字,所以我写了这个:
#include <stdio.h>
int main() {
int buffer[3] = {0}; // 3 items bcs it also reads the space between the "3"s
FILE* f = fopen("file.in", "r");
fread(buffer, 3, 4, f);
printf("%d %d", buffer[0], buffer[2]);
}
我认为输出应该是3 3,但我的想法类似于17?????? 17??????。但是,如果我将int buffer[3] = {0}; 设置为char buffer[3] = {'\0'}; 它工作正常
任何帮助的尝试表示赞赏
【问题讨论】:
-
等等,你的文件有代表十进制数字的 ascii 字符?或者它有原始的二进制有符号 32 位值?
-
您正在读取二进制文件,但以 ascii 格式打开文件。你的数据是二进制还是 ascii?
-
@Devolus 如何检查它是用二进制还是 ascii 编写的?
-
在您的
fopen电话中,您当前使用"r"。对于二进制文件,它应该是"rb"。编写文件时也是如此。