我的循环不工作(使用 feof)
My loop isn't working(using feof)
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);
所以我的问题是如何读取它,将数据放入我的结构中并停止循环?
见why is while(feof) always wrong。
相反,你应该循环直到你读不到一个学生:
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;
}
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);
所以我的问题是如何读取它,将数据放入我的结构中并停止循环?
见why is while(feof) always wrong。
相反,你应该循环直到你读不到一个学生:
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;
}