C语言编程:这个程序错哪了?从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去?求高手拯救1

#include<stdio.h>
#define N 2
struct student
{
char name[100];
int ID;
float grade[3];
float average[N];
}stud[N];
void save()
{
FILE *fp;
int i;
if((fp=fopen("stud_dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<N;i++)
if(fwrite(&stud[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void main()
{

int i;
printf("Please enter the date of the students :\n");
for(i=0;i<N;i++)
{
scanf("%s %d%f%f%f",stud[i].name,&stud[i].ID,
&stud[i].grade[0],&stud[i].grade[1],&stud[i].grade[2]);
}
//printf("The dates about the 5 students are:\n");
for(i=0;i<N;i++)
{
stud[i].average[i]=0.0;
for(int k=0;k<3;k++)
stud[i].average[i]=stud[i].average[i]+stud[i].grade[k];
stud[i].average[i]=stud[i].average[i]/3;
/*printf("name:%s\nID:%d\ngrade1:%.1f\ngrade2:%.1f\ngrade3:%.1f\naverage:%.1f\n",
stud[i].name,stud[i].ID,stud[i].grade[0],stud[i].grade[1],stud[i].grade[2],stud[i].average[i]);*/
}
save();
printf("\n");
}

然后检验时错了
#include<stdio.h>
#define N 2
struct student
{
char name[100];
int ID;
float grade[3];
float average[N];
}stud[N];
void main()
{
int i;
FILE *fp;
if((fp=fopen("stud_dat","rb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<N;i++)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("name:%s\nID:%d\ngrade1:%.1f\ngrade2:%.1f\ngrade3:%.1f\naverage:%.1f\n",
stud[i].name,stud[i].ID,stud[i].grade[0],stud[i].grade[1],stud[i].grade[2],stud[i].average[i]);
}
fclose(fp);
}
求修正错误。。。不用全改了。。。

第1个回答  2014-05-29
#include<stdio.h>
#include<stdlib.h>

#define SIZE 4

struct student
{
char s_num[10];
char s_name[20];
char sex[2];
int age;
}stu[SIZE];

void input()
{
int i;
for(i=0;i<SIZE;i++)
{
printf("请输入第%d个学生的数据内容:学号,姓名,性别(男:M,女F),年龄\n",i+1);
scanf("%s%s%s%d",stu[i].s_num,stu[i].s_name,stu[i].sex,&stu[i].age);
}
}

void save()
{
int i;
FILE *fp;
if((fp=(fopen("c:\\stu_list.txt","wb")))==NULL)
{
printf("can not open file:stu_list!\n");
exit(0);
}
for(i=0;i<SIZE;i++)
{
if((fwrite(&stu[i],sizeof(struct student),1,fp))!=1)
{
printf("write error!\n");
fclose(fp);
exit(0);
}
}
fclose(fp);
}

void main()
{
input();
save();
}

关键错误在于:fclose(0);
应该改为 fclose(fp);
相似回答