编写代码,实现如下功能:
建立班级通讯录,通讯录中记录每个学生的学号、姓名、电话。
每个人的信息作为数据块写到名为myfile.dat的二进制文件中,然后将文字的内容显示在屏幕上。
可以先定义一个存储学生信息的结构,然后在一个循环中获取班级n个学生的信息存入文件,然后再次打开文件读取学生信息显示在屏幕即可,代码如下:
#include <stdio.h>
#include <stdlib.h>
struct mailList{
int sid; // 学号
char name[20]; // 姓名
char phone[20]; // 电话号码
};
int main(void){
int n;
printf("请输入班级学生的人数:");
scanf("%d",&n);
struct mailList * ms = (struct mailList *)malloc(sizeof(struct mailList )*n); // 申请存储输入的学生信息的内存空间
// https://blog.csdn.net/jobfind/article/details/89191265
FILE * fp = fopen("myfile.dat","wb");
if(fp==NULL){
printf("文件打开或创建失败!\n");
return 0;
}
int i;
// 从输入获取n个学生的信息
for(i=0;i<n;i++){
printf("请输入第%d个学生的信息(学号 姓名 电话):",i+1);
scanf("%d %s %s",&ms[i].sid,ms[i].name,ms[i].phone);
// https://www.runoob.com/cprogramming/c-function-fwrite.html
fwrite(&ms[i],sizeof(struct mailList),1,fp);
}
fclose(fp);
fp = fopen("myfile.dat","rb");
if(fp==NULL){
printf("文件打开或创建失败!\n");
return 0;
}
struct mailList * rs = (struct mailList *)malloc(sizeof(struct mailList )*n); // 申请存储从文件读取学生信息的内存空间
// 从文件myfile.data读取n个学生的信息
for(i=0;i<n;i++){
// https://www.runoob.com/cprogramming/c-function-fread.html
fread(&rs[i],sizeof(struct mailList),1,fp);
printf("第%d个学生的信息(学号 姓名 电话):%d %s %s\n",i+1,ms[i].sid,ms[i].name,ms[i].phone);
}
fclose(fp);
return 0;
}