这名很简单 2020-06-13 16:34 采纳率: 0%
浏览 495

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

有3个学生,每个学生的数据包括学号(num),姓名(name[20]), 性别 (sex), 三门课的成绩 (score[3]), 要求从键盘输入这3个同学的数据,然后调用fun1函数将3个同学的学号、姓名、性别 和总分数据以二进制形式写入文件out.dat中,再调用fun2函数从文件out.dat中读取数据,并输出到屏幕上。

  • 写回答

1条回答 默认 最新

  • qtchen_1988 2020-06-13 17:54
    关注
    #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;
    }
    
    
    评论

报告相同问题?