私はバイナリツリーから物事を書き込む関数を持っています。私がそれを実行すると、ツリーのルートがtxtに書き込まれます。誰かが私に何が間違っているか教えてくれる?あなたは本当にあなたがwrte()
を呼び出すたびにファイルを開く必要がある場合はバイナリツリーをtxtファイルに書き込むpreorderly
void tree::wrte(person *p)
{
ofstream out("myfile.txt");
struct register{
char ID[15];
char name[30];
char surname[30];
};
register reg;
if(!(mybook=fopen("myfile.txt","a+")))
{
if (!(mybook=fopen("myfile.txt","w+")))
{
cerr<<"Couldnt opened"<<endl;return;
}
}
if(p)
{
strcpy(reg.name,p->name);
strcpy(reg.ID,p->ID);
strcpy(reg.surname,p->surname);
out << reg.ID <<'\t'<<reg.name<<'\t'<<reg.surname<<'\t'<<endl;
wrte(p->left);
wrte(p->right);
}
out.close();
}
なぜ関数呼び出しごとに1つのファイルディスクリプタを開くのですか? ofstreamを議論として渡すのはなぜですか? – fge
なぜ、 'p'が' NULL'であってもそれを開きますか? – fge
私はそれをやろうとしましたが、私はできませんでした。だからthatsの方法私はここで尋ねる:任意のアイデアpls?関数は常にファイルを開き、閉じます。\ –