feof这个是判断fread是否越界读取了,读完到文件结尾他还是返回0的,之后再读取的时候才返回1。
我改成了:
void print_putout() {
int i = 0, n;
FILE *fp;
BOOK *p1;
fp = fopen("list。
bok", "rb");
print_list_menu();
p1 = &book;
while (!feof(fp)) {
fread(p1, sizeof (BOOK), 1, fp);
if (ferror(fp)) {
break;
}
i++;
printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8d\n", p1->NUM, p1->NAME, p1->WRITER, p1->SORT, p1->PUBLISHER, p1->TIME, p1->CHARGE);
if (i == 8) {
gotoxy(75, 23);
scanf("%d", &n);
if (n == 1) print_list_menu();
if (n == 2) {
p1 = p1 - 8;
i = i - 8;
}
if (n == 3) return;
}
}
fclose(fp);
gotoxy(75, 23);
scanf("%d", &n);
if (n == 1) print_error();
if (n == 2) print_error();
if (n == 3) return;
}
。
全部