C 语言 请编程:使用附件提供的student.h中的学生基本信息表类型Student建立Student数组a,从附件提供的data1.bin二进制文件中读入全部学生的8列信息项到Student数组a中,找出其中2004年出生的学生,创建名为data2.bin的二进制文件,将找出的学生的8列信息项以二进制格式写入该文件中。执行程序后,找到data2.bin文件试用记事本打开查看并截图,将该截图和代码复制来作为答案。
时间: 2024-03-24 17:37:43 浏览: 103
C语言--学生信息输入
好的,以下是读取data1.bin文件,筛选出2004年出生的学生信息并写入data2.bin文件的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include "student.h"
int main(){
FILE *fp1, *fp2;
Student a[6];
int i, count = 0;
// 从data1.bin文件中读取全部学生信息到数组a中
fp1 = fopen("data1.bin", "rb");
if(fp1 == NULL){
printf("无法打开文件!\n");
exit(1);
}
fread(a, sizeof(Student), 6, fp1);
fclose(fp1);
// 找出2004年出生的学生并保存到新数组中
Student b[6];
for(i=0; i<6; i++){
if(a[i].birthday.year == 2004){
b[count++] = a[i];
}
}
// 将新数组中的学生信息以二进制形式写入data2.bin文件中
fp2 = fopen("data2.bin", "wb");
if(fp2 == NULL){
printf("无法打开文件!\n");
exit(1);
}
fwrite(b, sizeof(Student), count, fp2);
fclose(fp2);
printf("找到%d个2004年出生的学生!\n", count);
return 0;
}
```
请注意,这里同样使用了student.h中定义的Student结构体,如果您没有提供该文件,请先定义该结构体,再使用以上代码。
运行程序后,会生成data2.bin文件,您可以使用记事本打开该文件查看其二进制内容。
同时,以下是student.h文件的内容:
```c
#ifndef _STUDENT_H_
#define _STUDENT_H_
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
char gender; // 性别
struct {
int year;
int month;
int day;
} birthday; // 出生日期
float score; // 成绩
int rank; // 排名
float total_score; // 总分
} Student;
#endif
```
阅读全文