【发布时间】:2016-03-18 18:44:03
【问题描述】:
我正在将一个二进制文件读入我的程序,我的 .dat 文件中的第一个“东西”是一个整数,它告诉我文件中有多少个孔。基本上我正在打印动物列表,如果用户决定从列表中删除动物,我将其年龄更改为 -1 并将其添加到我的“洞”中。主要问题是我认为我的程序存在范围问题,但我在 C 方面仍然相当业余。
int * countHoles(FILE *file, struct animal ani, int holesValue) {
int i = 0;
int * availableHoles = malloc(sizeof(int) * 100);
for (i = 0; i < 100; i++) {
availableHoles[i] = 0;
}
while (1) {
fread(&ani, sizeof(ani), 1, file);
if (feof(file)) {
break;
}
if (ani.age < 0) {
availabeHoles[i] = ani.id;
printf("You found one! &d\n", availableHoles[i]);
}
}
for (i = 0; i < holesValues; i++) {
printf("availableHoles: %d\t", availableHoles);
}
return availableHoles;
}
所以我传入的东西是我在 main() 函数中打开的 .dat 文件,我拥有的动物结构,其中包含 ID、名称、物种、年龄、体重(不是那部分真的很重要),以及我从文件中读取的第一个整数中的孔。原始文件以 3 个孔开头,但随着用户删除动物,孔值会明显更新。在“if(ani.age
【问题讨论】:
-
没有主要功能。或样本输入,预期输出
标签: c arrays file pointers binary