1
FILE *test;
student st;
int i = 0;
test = fopen("example.bin", "rb");
while (feof(test))
{
    fread(&st, sizeof(st),1,test);
    Class[i] = st;

    i++;
}
fclose(test);

所以我的问题是如何阅读它,将数据放入我的结构中并停止循环?

4

1 回答 1

2

看看为什么 while(feof) 总是错误的。

相反,您应该循环直到您无法阅读学生:

while (1 == fread(&st, sizeof st, 1, test))
{
    Class[i++] = st;
}

此外,最好确保您不会溢出 的缓冲区Class,因此也要检查一下i,例如:

for (i = 0; i < MAX_CLASS && 1 == fread(&st, sizeof st, 1, test); ++i)
{
    Class[i] = st;
}
于 2015-11-25T21:52:15.463 回答