【发布时间】:2018-06-08 07:50:34
【问题描述】:
这是我的代码,用于将数据从二进制文件加载到结构数组,但我收到找不到文件的错误。文件在那里,它可以与其他功能一起使用。
void ispis2(void) {
float data_num = brojanje();
int N = data_num / 3;
ARTIKL artikl[120];
FILE *fp = NULL;
fp = fopen("artikli.bin", "rb");
if (fp == NULL) {
fprintf(stderr, "Pogreska: %s\n", strerror(errno));
}
else {
for (int i = 0; i < N; i++) {
fread(&artikl[i].ime, sizeof(artikl), 1, fp);
fread(&artikl[i].cijena, sizeof(artikl), 1, fp);
fread(&artikl[i].ID, sizeof(artikl), 1, fp);
}
for (int i = 0; i < N; i++) {
printf("Ime: %s", artikl[i].ime);
printf("Cijena: %f", artikl[i].cijena);
printf("ID: %d", artikl[i].ID);
}
}
}
【问题讨论】:
-
该文件不在您认为的位置,请检查您的程序运行的位置。告诉我们更多关于您的平台/IDE/编译器等的信息。
-
仔细检查文件名并根据需要使用完整路径。
-
This:
fread(&artikl[i].ime, sizeof(artikl), 1, fp);看起来很可疑,因为它基本上是在说单个字段ime与整个 120 个ARTIKLs 数组的大小相同。这没有任何意义,因为该字段位于该数组的一个元素中。你的意思可能是sizeof artikl[i].ime。 -
您的问题应该有一些minimal reproducible example 并且不是一个,因为我们不知道
ARTIKL是什么 -
我正在使用 sam 文件来写入二进制文件并完美运行。 ARTIKL 是一个结构。我将 fread 调整为 sizeof artikl[i].ime 还是不行。
标签: c