求救,把文件里的数据赋给结构体,为什么错了

#include<stdio.h>
#define N 30
FILE* fp;
struct student/*学生信息*/
{
    char num[10];/*学号*/
    char name[20];/*姓名*/
    char zhuanye[20];/*专业*/
    int class1;/*班级*/
    char kecheng[20];/*课程*/
    double math;/*数学分数*/
    double english;/*英语分数*/
    double chinese;/*语文分数*/
};
int main()
{
    int i,j;
    struct student t[N],*pp;
    pp=t;
    FILE* fp = fopen("stu-list.txt","r");
    for(j=0;j<N;j++,pp++)
    {
        fscanf(fp,"%s%s%s%d%s%lf%lf%lf",pp->num,pp->name,pp->zhuanye,&pp->class1,pp->kecheng,&pp->math,&pp->english,&pp->chinese);
        printf("学号:%s 姓名:%s 专业:%s 班级:%d 课程:%s\n 数学:%lf 英语:%lf 语文:%lf\n",t[j].num,t[j].name,t[j].zhuanye,t[j].class1,t[j].kecheng,t[j].math,t[j].english,t[j].chinese);
    }
    fclose(fp);


}

报错的错误信息也发一下吧。

gcc编译运行没问题。txt文件保存成gbk格式

FIlE open下加一句 

if (!fp)    return -1;