c++如何将信息存储到文件中,为什么会出现我那样的运行结果?

实验要求:

img


我的代码:
#include"student.h"
void CreatFile(St &st)
{
ifstream infile;
int i;
infile.open("student.txt",ios::in);
if(!infile)
{
cout<<"文件打开失败!"<<endl;
return ;
}
infile>>st.length;
st.elem=new ElemType[st.length+1];
for(i=1;i<=st.length;i++)
{
infile>>st.elem[i].num>>st.elem[i].name>>st.elem[i].data>>st.elem[i].C;
}
infile.close();
cout<<"文件读入完成!"<<endl;
}
void WriteFile(St st)
{
ofstream outfile;
int i;
outfile.open("student.txt",ios::out);
if(!outfile)
{
cout<<"文件打开失败!"<<endl;
return ;
}
outfile<<st.length<<endl;
for(i=1;i<=st.length;i++)
{
outfile<<st.elem[i].num<<" ";
outfile<<st.elem[i].name<<" ";
outfile<<st.elem[i].data<<" ";
outfile<<st.elem[i].C<<endl;
}
cout<<"文件写入成功!"<<endl;
}
void Print(St st)
{
cout<<"学号 姓名 数据结构 程序设计"<<endl;
for(int i=1;i<=st.length;i++)
{
cout<<setw(7)<<st.elem[i].num;
cout<<setw(7)<<st.elem[i].name;
cout<<setw(7)<<st.elem[i].data;
cout<<setw(7)<<st.elem[i].C<<endl;
}
}
int Search_Seq(St st,char str[20])
{
int i=st.length;
strcpy(st.elem[0].name,str);
while(strcmp(st.elem[i].name,str)!=0)
i--;
return i;
}
int Search_Bin(St st,int x)
{
int low=1,high=st.length,mid;
while(low<=high)
{
mid=(low+high)/2;
if(x==st.elem[mid].num)
return mid;
else if(x>st.elem[mid].num)
low=mid+1;
else
high=mid-1;
}
return 0;
}
void InsertSort(St &st)
{
int i,j;
for(i=2;i<=st.length;i++)
{
if(strcmp(st.elem[i].name,st.elem[i-1].name)<0)
{
st.elem[0]=st.elem[i];
for(j=i-1;strcmp(st.elem[j].name,st.elem[0].name)>0;j--)
st.elem[j+1]=st.elem[j];
st.elem[j+1]=st.elem[0];
}
}
}
void SelectSort(St &st)
{
int i,k,j;
for(i=1;i<st.length;i++)
{
k=i;
for(j=i+1;j<=st.length;j++)
if(st.elem[j].data<st.elem[k].data)
k=j;
if(k!=i)
{
st.elem[0]=st.elem[i];
st.elem[i]=st.elem[k];
st.elem[k]=st.elem[0];
}
}
}
void BubbleSort(St &st)
{
int i,j,flag=1;
for(i=1;i<st.length&&flag;i++)
{
flag=0;
for(j=1;j<=st.length-i;j++)
{
if(st.elem[j].C>st.elem[j+1].C)
{
st.elem[0]=st.elem[j];
st.elem[j]=st.elem[j+1];
st.elem[j+1]=st.elem[0];
flag=1;
}
}
}
}
我的运行结果:

img


```c++

```c++



代码不全?