#include"fstream.h"
#include"iostream.h"
#define man 2
struct student
{
//char name[20];
long num;
char sex;
float chinese;
float math;
float english;
};
struct student stu[man];
int length=0;
int m=0;
int k=0;
void insert()
{
//char na[20];
long nu;
char s;
float ch;
float ma;
float en;
//cout<<"请输入姓名:"<<endl;
//cin>>na;
cout<<"请输入学号:"<<endl;
cin>>nu;
cout<<"请输入语文成绩:"<<endl;
cin>>ch;
cout<<"请输入数学成绩:"<<endl;
cin>>ma;
cout<<"请输入英语成绩:"<<endl;
if(length>=man)
cout<<"已经越界,请从新调整man!"<<endl;
//stu[length].name=na;
stu[length].num=nu;
stu[length].sex=s;
stu[length].chinese=ch;
stu[length].english=en;
stu[length].math=ma;
length++;
}
void f_write()
{
fstream outfile("student.dat",ios::out|ios::binary);
if(!outfile)
{cout<<"无法打开文件!"<<endl;}
for(int i=0;i<length;i++)
{
outfile.write((char*)&stu[i],sizeof(stu[i]));
}
outfile.close();
cout<<"写入成功!"<<endl;
}
void getLen()
{
student stu2[1];
fstream infile("student.dat",ios::in|ios::binary);
if(!infile)
{cout<<"无法找到文件!"<<endl;}
infile.seekg(0,ios::beg);
for(int i=0; ;i++)
{
//int t=0;
k=i;
infile.read((char*)&stu2[0],sizeof(stu2[0]));
if(stu2[0].chinese=0)
// return k;
break;
}

}
void f_read()
{
void getLen();
int q=10;///////q=k
if(q=0)cout<<"文件为空!"<<endl;//注意了
student stu3[10];//1000问题
student stu4[1];
fstream in("student.dat",ios::in|ios::out|ios::binary);
if(!in)
{cout<<"无法打开文件来读取!"<<endl;}
for(int i=0;i<=q;i++)
{
in.read((char*)&stu3[i],sizeof(stu3[i]));
}
for(int j=q;j>=0;j--)
{
for(int d=0;d<j;d++)
{
if(stu3[d].num>stu3[d+1].num)
{
stu4[0]=stu3[d];
stu3[d]=stu3[d+1];
stu3[d+1]=stu3[d];
}
}
}
for(int g=0;g<k;g++)
{
in.write((char*)&stu3[i],sizeof(stu3[i]));
cout<<"语文:"<<stu3[i].chinese<<endl;
}
in.close();
for(int p=0;p<=q;p++)
{
cout<<"语文:"<<stu3[p].chinese<<endl;//仅输出了语文
}
}
void main()
{
insert();
f_write();
f_read();
}

解决方案 »

  1.   

    执行到for(int p=0;p <=q;p++) 

    cout < <"语文:" < <stu3[p].chinese < <endl;//仅输出了语文 

    就结束了,谢谢指点!
      

  2.   

    你的问题我不很明白,说清楚点,我看了下你的代码,改了点,你看下#include"fstream.h" 
    #include"iostream.h" 
    #define man 2 
    struct student 

    //char name[20]; 
    long num; 
    char sex; 
    float chinese; 
    float math; 
    float english; 
    }; 
    struct student stu[man]; 
    int length=0; 
    int m=0; 
    int k=0; 
    void insert() 

    //char na[20]; 
    long nu; 
    char s; 
    float ch; 
    float ma; 
    float en; 
    //cout < <"请输入姓名:" < <endl; 
    //cin>>na; 
    cout <<"请输入学号:" <<endl; 
    cin>>nu; 
    cout <<"请输入语文成绩:" <<endl; 
    cin>>ch; 
    cout <<"请输入数学成绩:" <<endl; 
    cin>>ma; 
    cout <<"请输入英语成绩:" <<endl; cin>>en;     //miss,,,这个你忘了if(length>=man) 
    cout <<"已经越界,请从新调整man!" <<endl; 
    //stu[length].name=na; 
    stu[length].num=nu; 
    stu[length].sex=s; 
    stu[length].chinese=ch; 
    stu[length].english=en; 
    stu[length].math=ma; 
    length++; 

    void f_write() 

    fstream outfile("student.dat",ios::out |ios::binary); 
    if(!outfile) 
    {cout <<"无法打开文件!" <<endl;} 
    for(int i=0;i <length;i++) 

    outfile.write((char*)&stu[i],sizeof(stu[i])); 

    outfile.close(); 
    cout <<"写入成功!" <<endl; 

    void getLen() 

    student stu2[1]; 
    fstream infile("student.dat",ios::in |ios::binary); 
    if(!infile) 
    {cout <<"无法找到文件!" <<endl;} 
    infile.seekg(0,ios::beg); 
    for(int i=0; ;i++) 

    //int t=0; 
    k=i; 
    infile.read((char*)&stu2[0],sizeof(stu2[0])); 
    if(stu2[0].chinese=0) 
    // return k; 
    break; 
    } } 
    void f_read() 

    void getLen(); 
    int q=10;///////q=k 
    if(q=0)cout <<"文件为空!" <<endl;//注意了 
    student stu3[10];//1000问题 
    student stu4[1]; 
    fstream in("student.dat",ios::in |ios::out |ios::binary); 
    if(!in) 
    {cout <<"无法打开文件来读取!" <<endl;} 
    for(int i=0;i <=q;i++) 

    in.read((char*)&stu3[i],sizeof(stu3[i])); 

    for(int j=q;j>=0;j--) 

    for(int d=0;d <j;d++) 

    if(stu3[d].num>stu3[d+1].num) 

    stu4[0]=stu3[d]; 
    stu3[d]=stu3[d+1]; 
    stu3[d+1]=stu3[d]; 



    for(int g=0;g <k;g++) 

    in.write((char*)&stu3[i],sizeof(stu3[i])); 
    cout <<"语文:" <<stu3[i].chinese <<endl; 

    in.close(); 
    for(int p=0;p <=q;p++) 

    cout <<"语文:" <<stu3[p].chinese <<endl;//仅输出了语文??你的意思是要输出数学跟英语吗?在下面加就行啦 cout <<"math:"<<stu3[p].math<<endl;            //miss
    cout<<"english"<<stu3[p].english<<endl;


    void main() 

    insert(); 
    f_write(); 
    f_read(); 
    }
      

  3.   

    错误非常多,仔细调试一下,注意指针越界。
    比如这句:
    if(q=0)cout < <"文件为空!" < <endl;//注意了 应该是
    if(q==0)cout < <"文件为空!" < <endl;//注意了 
      

  4.   

    指定写文件模式,
    fstream outfile("student.dat",ios::out ¦ios::binary¦ios::app);