【发布时间】:2021-01-25 10:58:49
【问题描述】:
我正在尝试使用fread 读取垃圾箱? .我正在读取的二进制文件有 100 万组数据。但是我只得到 600+ 并且读取的数据是 0 或 -1.#QNAN0。我使用fread 的方式是否正确?
struct Data {
float time;
float signal1;
float signal2;
float signal3;
};
long i;
static struct Data data[1000]; //(Solve by using static)
long openfile() {
FILE *fp;
char* filename = "Test_0012.bin";
fp = fopen(filename, "rb");
if (fp == NULL){
printf("Could not open file %s",filename);
return 1;
}
while(!feof(fp)){
fread(&data, sizeof(data),1,fp);
printf("%d\t", i);
printf("%f\t", data[i].time);
printf("%f\t", data[i].signal1);
printf("%f\t", data[i].signal2);
printf("%f\n", data[i].signal3);
i++;
}
fclose(fp);
return i;
}
【问题讨论】:
-
fread的结果是否等于sizeof(data)? -
如果文件包含一百万个数据集,那么包含 1000 个项目的数组将不足以存储这些数据。
-
顺便说一句:这可能不是this的重复,可能还有其他不相关的问题