请用C语言实现双结构体数组写入文件和读取文件操作,使用printf函数
时间: 2024-02-01 09:16:32 浏览: 86
以下是双结构体数组写入文件和读取文件的示例代码,使用了fread、fwrite和printf函数:
```c
#include <stdio.h>
typedef struct {
int id;
char name[20];
} Student;
typedef struct {
int num;
Student stu[10];
} Class;
int main() {
// 创建一个包含两个班级的双结构体数组
Class classes[2];
classes[0].num = 3;
classes[0].stu[0].id = 1001;
sprintf(classes[0].stu[0].name, "Tom");
classes[0].stu[1].id = 1002;
sprintf(classes[0].stu[1].name, "Jerry");
classes[0].stu[2].id = 1003;
sprintf(classes[0].stu[2].name, "Alice");
classes[1].num = 2;
classes[1].stu[0].id = 2001;
sprintf(classes[1].stu[0].name, "Bob");
classes[1].stu[1].id = 2002;
sprintf(classes[1].stu[1].name, "Eve");
// 将数据写入文件
FILE *fp = fopen("classes.dat", "wb");
if(fp == NULL) {
printf("无法打开文件\n");
return 1;
}
fwrite(classes, sizeof(Class), 2, fp);
fclose(fp);
// 从文件中读取数据
fp = fopen("classes.dat", "rb");
if(fp == NULL) {
printf("无法打开文件\n");
return 1;
}
Class classes_read[2];
fread(classes_read, sizeof(Class), 2, fp);
fclose(fp);
// 输出读取到的数据
int i, j;
for(i = 0; i < 2; i++) {
printf("班级%d有%d个学生:\n", i + 1, classes_read[i].num);
for(j = 0; j < classes_read[i].num; j++) {
printf("学生%d:ID=%d,姓名=%s\n", j + 1, classes_read[i].stu[j].id, classes_read[i].stu[j].name);
}
}
return 0;
}
```
运行结果:
```
班级1有3个学生:
学生1:ID=1001,姓名=Tom
学生2:ID=1002,姓名=Jerry
学生3:ID=1003,姓名=Alice
班级2有2个学生:
学生1:ID=2001,姓名=Bob
学生2:ID=2002,姓名=Eve
```
阅读全文