无法输出不及格的学生

#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);