修改程序:#include <stdio.h> #include <stdlib.h> #include <string.h> #define Element 6 struct Student { char name[8]; char id[12]; int sex; int age; float total_gpa; } student[Element]; int main() { int i; FILE *fp; if ((fp = fopen("stu.dat", "rb")) == NULL) { printf("Can't open file!\n"); exit(0); } for(i=0;i<Element;i++) { fread(&student[i],sizeof(struct student_type),6,fp); printf("%-10s% %4s %4d %4d %-15f\n",student[i].id, student[i].name, student[i].sex, student[i].age, student[i].total_gpa) } fclose(fp); return 0; }
时间: 2024-03-08 10:50:42 浏览: 243
修改程序如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Element 6
struct Student {
char name[8];
char id[12];
int sex;
int age;
float total_gpa;
} student[Element];
int main() {
int i;
FILE *fp;
if ((fp = fopen("stu.dat", "rb")) == NULL) {
printf("Can't open file!\n");
exit(0);
}
for(i = 0; i < Element; i++) {
fread(&student[i], sizeof(struct Student), 1, fp);
printf("%-10s %-8s %4d %4d %-15f\n", student[i].id, student[i].name, student[i].sex, student[i].age, student[i].total_gpa);
}
fclose(fp);
return 0;
}
```
修改点如下:
1. 结构体名称应该与定义的一致,即 `student` 而不是 `student_type`;
2. 在 `fread` 中,`sizeof(struct student_type)` 应该改为 `sizeof(struct Student)`,且第三个参数应该为 1 而不是 6;
3. 在 `printf` 中,`% %4s` 应该改为 `%-8s`,即输出 `name` 时保证对齐;
4. `printf` 格式化字符串中,`%-10s` 后应该有一个空格,即输出 `id` 时保证对齐。
阅读全文