文件的输入输出出错了 请指点一下。。
输入学生成绩 存入文件中读取文件数据存入结构体数组中 计算出总分
输出这段程序
请哪位 高人 帮忙看一下 怎么编译器 能够通过 但是运行的时候会出错呢?
#include <stdio.h>
#include <stdlib.h>
typedef struct student{
int id;
char name[20];
int mid;
int end;
int total;
}ST;
int read_records(FILE *f,ST *s,int n);
void print_records(ST *s,int n);
int main(void)
{
FILE *f=NULL;
int n=0;
ST *s=NULL;
n=read_records(f,s,n);
print_records(s,n);
free(s);
return 0;
}
int read_records(FILE *f,ST *s,int n)
{
int i;
ST a;
char line[50];
if((f=fopen("st.txt","w"))==NULL){
printf("Can't open it\n");
exit(1);
};
printf("请输入学号 名字 期中 期末(ctrl+z结束输入)\n ");
fgets(line,50,stdin);
while(!feof(stdin)){
sscanf(line,"%d %s %d %d ",
&a.id,a.name,&a.mid,&a.end);
fwrite(s,sizeof(ST),1,f);
n++;
fgets(line,50,stdin);
}
fclose(f);
s=malloc(sizeof(ST)*n);
if((f=fopen("st.txt","r"))==NULL){
printf("无法打开文件\n");
exit(1);
};
for(i=0;i<n;i++)
fread((s+i),sizeof(ST),1,f);
fclose(f);
return(n);
}
void print_records(ST *s,int n)
{
int i=0;
for(i=0;i<=n;i++)
(s+i)->total=(s+i)->mid+(s+i)->end;
printf(" -------------------------------- \n");
printf("ID NAME MID END TOTAL \n");
printf(" -------------------------------- \n");
for(i=0;i<=n;i++)
printf("%d %s %d %d %d \n",
(s+i)->id,(s+i)->name,(s+i)->mid,(s+i)->end,(s+i)->total);
printf(" -------------------------------- \n");
}