#include<stdio.h>
struct student
{
int num,score;
char name[20];
}stu[1000],stu1[1000];
int main()
{
int i,j,n;
FILE *fp,*fp1;
printf("请输入学生人数:\n");
scanf("%d",&n);
printf("请按顺序输入学号、姓名、分数\n");
for(i=0;i<n;i++)
{
scanf("%d",&stu[i].num);
scanf("%s",&stu[i].name);
scanf("%d",&stu[i].score);
}
for(j=0,i=0;i<n;i++)
{
if(stu[i].score<60)
{
stu1[j]=stu[i];
j++;
}
}
fp=fopen("student.txt","w");
fprintf(fp,"学生信息如下(学号、姓名、成绩):\n");
for(i=0;i<n;i++)
{
printf("%d %s %d \n",stu[i].num,stu[i].name,stu[i].score);
fprintf(fp,"%d %s %d \n",stu[i].num,stu[i].name,stu[i].score);
}
fclose(fp);
fp1=fopen("student.binary","w");
printf("不及格的学生如下:\n");
fprintf(fp1,"不及格的学生如下:\n");
for(i=0;i<j;i++)
{
fprintf(fp,"%s\n",stu1[i].name);
fprintf(fp1,"%s\n",stu1[i].name);
}
fclose(fp1);
}
scanf("%s",&stu[i].name);这一句写错了,应该是scanf("%s",stu[i].name);
最后面的for循环中,
fprintf(fp1,"不及格的学生如下:\n");
for(i=0;i<j;i++)
{
//fprintf(fp,"%s\n",stu1[i].name); //这一句需要注释掉,fp已经关闭了
fprintf(fp1,"%s\n",stu1[i].name);
}
fclose(fp1);