0
 void createtask(char filename[MAX])
{
char filenameb[MAX];
strcpy(filenameb,filename);
strcat(filenameb,".dat");

fstream writeb;
fstream readb;

writeb.open(filenameb,ios::out | ios::binary);

task t;
int nooftask;
cout<<"-----------------------------------"
    <<endl
    <<endl
    <<"Creation of task"
    <<endl
    <<endl
    <<"How many task ?: ";
cin>>nooftask;

cin.clear();
cin.ignore(200,'\n');

for(int i=1;i<=nooftask;i++)
{
    t.task_no=i;

    cout<<endl
        <<"Information for task "
        <<i
        <<endl
        <<endl;


    cout<<"Title for assessment: ";
    cin.getline(t.task_title,200);


    cout<<"Weight (%): ";
    cin>>t.task_weight;

    cout<<"Full mark upon: ";
    cin>>t.task_fullmark;

    cin.clear();
    cin.ignore(200,'\n');

    cout<<"Description: ";
    cin.getline(t.task_descrip,200);

    writeb.write(reinterpret_cast <const char *>(&t), sizeof (t));

    cout<<t.task_descrip
        <<endl
        <<t.task_fullmark
        <<endl
        <<t.task_no;


}

writeb.clear();



writeb.close();

cout<<endl
    <<endl
    <<"The creation of task file is completed"
    <<endl
    <<endl
    <<"The summary of creation"
    <<endl
    <<endl;

//summarytask(readb,filenameb);

    //start
    cout<<"Summary of task"
    <<endl
    <<endl;

    readb.open(filenameb,ios::binary | ios::in);


while (readb.read(reinterpret_cast < char *>(&t), sizeof (t)) ); // problem is here
{
    cout<<endl
        <<endl
        <<t.task_no // programme only output the last record in binary file
        <<endl
        <<t.task_title;//

}

readb.close();
//end


}

バイナリファイル内のすべてのレコードをコンソールウィンドウに出力できないように見えることを除いて、すべて正常に動作します。何らかの理由でバイナリ ファイルの最後のレコードしか出力できません、ありがとう

4

1 に答える 1

0

追加した ;

while (readb.read(reinterpret_cast < char *>(&t), sizeof (t)) ); // there shouldnt
//be a ; after the while
于 2013-01-14T11:48:52.267 に答える