学号,姓名,性别,三门课的成绩,调用fun1函数以二进制写入文件,再调用fun2函数从文件读取数据,输出到屏幕上

有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;
}