absort()has been called警告?

在写程序时,希望实现从文件中按顺序取数据并存入类grade 的数组st[100]中,
但是从文件读取数据的时候遇到了这个警告,求助大神!!
读取程序段:

int Read(grade st[])  
{
    char names[20];   //学生姓名
    char courses[20];  //课程名称
    int codes;         //课程代号
    int marks;           //分数
    fstream File;
    File.open("score.txt",ios::in|ios::binary);
    if(!File)
    {
        cout<<"score.txt can't open!"<<endl;
        abort();
    }
      File.seekg(0);                                 //定位回文件头
      int i=0;
      while(File.peek()!=EOF)  
      {
          File>>codes;
          File>>courses;
          File>>names;
          File>>marks;
          st[i].setcode(codes);
          st[i].setcourse(courses);
          st[i].setname(names);
          st[i].setmark(marks);
          i++;
      }
   File.close();
   return i ;
}

grade类:

class grade:public fig
{
public:
    grade(char *n="ss",char *c="s",int code=0,int mark=0,int y=0,int m=0,int d=0)
    {
        strcpy(name,n);
        strcpy(course,c);
        this->code=code;
        this->mark=mark;
        number++;
    }
    ~grade(){number--;}
    grade(grade &a)
    {
        strcpy(name,a.name);
        strcpy(course,a.course);
        code=a.code;
        mark=a.mark;
    }
    void setname(char *n){strcpy(name,n);}
    void setcourse(char *n){strcpy(course,n);}
    void setcode(int k=0){code=k;}
    void setmark(int k=0){mark=k;}
    char *getname()
    {
        char *n;n=name;
        return n;
    }
    char *getcourse()
    {
        char *n;
        n=course;
        return n;
    }
    int getmark()
    {
        int n=mark;
        return n;
    }
    int getcode()
    {
        int n=code;
        return n;
    }
private:
    char name[20];//学生姓名
    char course[20];//课程名称
    int code;//课程代号
    int mark;//分数
    static int number;//计算录入信息总人数
};

主函数调用写法:

void main()
{
    grade st[100];
        int sum;
        sum=Read(st);
}

这多半是你数组越界或者访问了无效地址造成的。
你的 char name[20];//学生姓名
char course[20];//课程名称
长度是足够

图片说明
建议把这个abort()改为exit()或者return 0;试试看会不会还有abort has been called的错误,如果没有的话就是这个的问题,如果有的话再排除别的问题

你定义了abort();,然后调用了它
这里不要这么写。