C语言,输入n个学生信息存入文件,输出优秀,请挖错

来源:百度知道 编辑:UC知道 时间:2024/05/20 15:28:57
这是我在TC++3.1上编译调试通过的程序
#include <stdio.h>
#include <malloc.h>
struct student
{
long num;
char name[20];
float score;
};

void main()
{
struct student *p,*s;
int n,i;
FILE *fp;
printf("您要输入多少位学生?");
scanf("%d",&n);
p=(struct student*)malloc(sizeof(struct student)*n);
printf("请输入%d位学生的学号,姓名和成绩\n",n);
for(i=0; i<n; i++)
{
scanf("%ld%s%f",&p[i].num,p[i].name,&p[i].score);
}
fp=fopen("stu.dat","wb");
fwrite(p,sizeof(struct student)*n,1,fp);
fclose(fp);
free(p);
puts("正在查找...");
puts("大于90分的同学有:");
fp=fopen("stu.dat","rb");
s=(struct student *)malloc(sizeof(struct student));
fread(s,sizeof(struct student),1,fp);
while(!feof(fp))
{
if(s->score>=80)pri

可能是Win TC的一个bug,可以这样试试:
float sc;
for(i=0; i<n; i++)
{
scanf("%ld%s%f",&p[i].num,p[i].name,&sc);
p[i].score = sc;
}

我的没有Tc,只有C++帮补了你。要不你试着在输入语句之前加上
while(scanf("%d",&n)!=EOF)
{
另一个花括号加在后面