#include<iostream>
#include<vector>
#include<stdlib.h>
#include<cstdio>
#include<cstring>
#include "main.h"
#include "Operate.h"
#include "Find.h"
#define STUDENT 50000
using namespace std;
int tot=0;
vector<Student> stu;
void read_file()
{
FILE*fp = fopen("student.txt","r");
while(fscanf(fp,"%s",stu[tot+1].name)!=EOF)
{
++tot;
fscanf(fp,"%lld",&stu[tot].snum);
fscanf(fp,"%lf",&stu[tot].total_score);
fscanf(fp,"%d",&stu[tot].num);
for(int i=1;i<=stu[tot].num;++i)
{
fscanf(fp,"%s",stu[tot].lecture[i].l_name);
fscanf(fp,"%lf",&stu[tot].lecture[i].score);
}
stu[tot].flag=1;
}
fclose(fp);
}
void add(Student a)
{
int i,j;
++tot;
for(i=0;i<strlen(a.name);++i)
stu[tot].name[i]=a.name[i];
stu[tot].num=a.num;
stu[tot].snum=a.snum;
stu[tot].total_score=a.total_score;
for(i=1;i<=a.num;++i)
for(j=0;j<strlen(a.lecture[i].l_name);++j) stu[tot].lecture[i].l_name[j]=a.lecture[i].l_name[j];
}
void input_student()
{
int i;
Student a;
char ch;
while(1)
{
++tot;
system("cls");
printf("\n\n");
printf("\t\t学生成绩管理系统->录入学生信息\n\n\n");
printf("\n\t\t请输入学生学号:\n");
printf("\t\t");
scanf("%lld",&a.snum);
printf("\n\t\t请输入学生姓名:\n");
printf("\t\t");
scanf("%s",a.name);
printf("\n\t\t请输入学生已选课程数目:\n");
printf("\t\t");
scanf("%d",&a.num);
a.total_score=0;
for(i=1;i<=a.num;++i)
{
printf("\n\t\t请输入学生所选第%d门课程名称:\n",i);
printf("\t\t");
scanf("%s",a.lecture[i].l_name);
printf("\n\t\t请输入学生所选第%d门课程成绩:\n",i);
printf("\t\t");
scanf("%lf",&a.lecture[i].score);
a.total_score+=a.lecture[i].score;
}
add(a);
printf("\n\n\t\t");
printf("是否继续输入其他学生的信息(Y/N)");
cout<<"OK"<<endl;
while(1)
{
ch=getchar();
if(strchr("YyNn",ch)!=NULL) break;
}
if(ch=='n'||ch=='N') break;
}
}
为什么我的add函数里面stu[i]赋值的地方总是出错
#include<vector>
#include<stdlib.h>
#include<cstdio>
#include<cstring>
#include "main.h"
#include "Operate.h"
#include "Find.h"
#define STUDENT 50000
using namespace std;
int tot=0;
vector<Student> stu;
void read_file()
{
FILE*fp = fopen("student.txt","r");
while(fscanf(fp,"%s",stu[tot+1].name)!=EOF)
{
++tot;
fscanf(fp,"%lld",&stu[tot].snum);
fscanf(fp,"%lf",&stu[tot].total_score);
fscanf(fp,"%d",&stu[tot].num);
for(int i=1;i<=stu[tot].num;++i)
{
fscanf(fp,"%s",stu[tot].lecture[i].l_name);
fscanf(fp,"%lf",&stu[tot].lecture[i].score);
}
stu[tot].flag=1;
}
fclose(fp);
}
void add(Student a)
{
int i,j;
++tot;
for(i=0;i<strlen(a.name);++i)
stu[tot].name[i]=a.name[i];
stu[tot].num=a.num;
stu[tot].snum=a.snum;
stu[tot].total_score=a.total_score;
for(i=1;i<=a.num;++i)
for(j=0;j<strlen(a.lecture[i].l_name);++j) stu[tot].lecture[i].l_name[j]=a.lecture[i].l_name[j];
}
void input_student()
{
int i;
Student a;
char ch;
while(1)
{
++tot;
system("cls");
printf("\n\n");
printf("\t\t学生成绩管理系统->录入学生信息\n\n\n");
printf("\n\t\t请输入学生学号:\n");
printf("\t\t");
scanf("%lld",&a.snum);
printf("\n\t\t请输入学生姓名:\n");
printf("\t\t");
scanf("%s",a.name);
printf("\n\t\t请输入学生已选课程数目:\n");
printf("\t\t");
scanf("%d",&a.num);
a.total_score=0;
for(i=1;i<=a.num;++i)
{
printf("\n\t\t请输入学生所选第%d门课程名称:\n",i);
printf("\t\t");
scanf("%s",a.lecture[i].l_name);
printf("\n\t\t请输入学生所选第%d门课程成绩:\n",i);
printf("\t\t");
scanf("%lf",&a.lecture[i].score);
a.total_score+=a.lecture[i].score;
}
add(a);
printf("\n\n\t\t");
printf("是否继续输入其他学生的信息(Y/N)");
cout<<"OK"<<endl;
while(1)
{
ch=getchar();
if(strchr("YyNn",ch)!=NULL) break;
}
if(ch=='n'||ch=='N') break;
}
}
为什么我的add函数里面stu[i]赋值的地方总是出错

