原代碼 `fwrite(&studenta, sizeof(struct stu), 1, fp)` 只寫 1 個元素,導致後續讀取只有第一條。
int main() {
struct Stu { int numb; char name[10]; int score; } a[3], b[3];
FILE* fp = fopen("score.dat", "wb+");
// 輸入
for (int i = 0; i < 3; ++i) {
printf("編號 姓名 成績: ");
scanf("%d %9s %d", &a[i].numb, a[i].name, &a[i].score);
}
// 寫入全部 3 個
fwrite(a, sizeof(struct Stu), 3, fp);
// 讀取全部
rewind(fp);
fread(b, sizeof(struct Stu), 3, fp);
for (int i = 0; i < 3; ++i)
printf("%d %s %d\n", b[i].numb, b[i].name, b[i].score);
fclose(fp);
return 0;
}