feof这个是判断fread是否越界读取了,读完到文件结尾他还是返回0的,之后再读取的时候才返回1。我改成了:void print_putout() { int i = 0, n;FILE *fp;BOOK *p1;fp = fopen("list.bok", "rb");print_list_menu();p1 展开
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;} 收起