大佬们救命,求解
有3个学生,每个学生的数据包括学号(num),姓名(name[20]), 性别 (sex), 三门课的成绩 (score[3]), 要求从键盘输入这3个同学的数据,然后调用fun1函数将3个同学的学号、姓名、性别 和总分数据以二进制形式写入文件out.dat中,再调用fun2函数从文件out.dat中读取数据,并输出到屏幕上。
#include <stdio.h>
#include <stdlib.h>
#define N 3
struct student
{
int num ;
char name[10];
char sex;
float score[3];
int sum;
}stu[N] ;
void fun1()
{
FILE *fp;
int i;
if( (fp= fopen("out.dat","wb"))== NULL)
{
printf("cannot open file\n") ;
exit(0) ;
}
for(i=0;i<N;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf ("file write error\n") ;
fclose(fp) ;
}
void fun2 ()
{
FILE * fp;
int i;
struct student stu[N] ;
if((fp= fopen ("out.dat","rb"))== NULL)
{
printf ("cannot open file \n") ;
exit (0) ;
}
for (i=0;i<N;i++ )
{
fread(&stu[i],sizeof(struct student),1,fp) ;
printf("%d%s%s%d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].sum);
fclose(fp) ;
}
}
int main()
{
int i,j,sum;
for(i=0;i<N;i++ )
{
printf ("input scores of student %d;\n",i+1) ;
printf ("NO. :") ;
scanf ("%d",&stu[i].num) ;
printf ("name:");
scanf ("%s",&stu[i].name) ;
printf ("sex:");
scanf ("%s",&stu[i].sex);
sum=0;
for(j=0;j<3;j++)
{
printf ("score %d:",j+1) ;
scanf ("%f",&stu[i].score[j]) ;
sum=sum+stu[i].score[j] ;
}
stu[i].sum=sum;
}
fun1();
fun2();
return 0;
}