有3个学生,每个学生的数据包括学号(num),姓名(name[20]), 性别 (sex), 三门课的成绩 (score[3]), 要求从键盘输入这3个同学的数据,然后调用fun1函数将3个同学的学号、姓名、性别 和总分数据以二进制形式写入文件out.dat中,再调用fun2函数从文件out.dat中读取数据,并输出到屏幕上。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Stu{
int num;
char name[20];
int sex;
float score[3];
};
int fun1()
{
FILE *fp = fopen("out.dat","wb");
if(!fp)
{
printf("无法打开文件");
return -1;
}
struct Stu stu[3];
memset(stu,0x0,sizeof(struct Stu)*3);
for(int i=0;i<3;i++)
{
//从键盘读取信息...
gets(stu[i].name);
/*
*还有其他输入详细见 https://ask.csdn.net/questions/1083462
* */
fwrite(&stu[i],sizeof(struct Stu),1,fp);
}
fclose(fp);
return 0;
}
int fun2()
{
FILE *fp = fopen("out.dat","rb");
if(!fp)
{
printf("无法打开文件");
return -1;
}
struct Stu stu[3];
memset(stu,0x0,sizeof(struct Stu)*3);
//读取信息...
printf("******************Output*****************\n");
for(int i=0;i<3;i++)
{
fread(&stu[i],sizeof(struct Stu),1,fp);
printf("%s\n",stu[i].name);
}
fclose(fp);
return 0;
}
int main(){
int ret = fun1();
if(ret != -1)
{
fun2();
}
return 0;
}