编写一个完整无错的代码不用c++

从键盘输入4位学生的数据(学生数据包括学号、姓名和三门课的成绩),然后将它们转存到磁盘文件中。

供参考:

#include<stdio.h>
#define N 3  //人数
#define M 3  //课程
struct student{
       int   num;
       char  name[16];
       float score[M];
};

int main()
{
     struct student s[N];
     int i,j;
     FILE *fp;
     printf("请输入学生  学号   姓名   课程1  课程2   课程3\n");
     for(i=0;i<N;i++){
         printf("请输入第%d位的学生信息:",i+1);
         scanf("%d%s",&s[i].num,s[i].name);
         for(j=0;j<M;j++)
             scanf("%f",&s[i].score[j]);
     }
     for(i=0;i<N;i++){          //显示
         printf("%d %s",s[i].num,s[i].name);
         for(j=0;j<M;j++)
             printf(" %.2f",s[i].score[j]);
         printf("\n");
     }

     fp = fopen("student_data.txt","w");//保存到文件
     if(fp == NULL){
         printf("文件打开错误!\n");
         exit(0);
     }
     for(i=0;i<N;i++){
         fprintf(fp,"%d %s %f %f %f",s[i].num,s[i].name,
                       s[i].score[0],s[i].score[1],s[i].score[2]);
     }
     fclose(fp);
     
     return 0;
}