【发布时间】:2011-12-23 17:45:00
【问题描述】:
我有一个从二叉树中写入内容的函数。当我运行它时,它只是将树的根写入 txt。谁能告诉我这里出了什么问题?
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();
}
【问题讨论】:
-
为什么每次函数调用都打开一个文件描述符?为什么不将 ofstream 作为参数传递?
-
即使
p是NULL,你为什么还要打开它? -
我试图这样做,但我做不到。所以这就是我在这里问的方式:\有什么想法吗?因为函数总是打开和关闭文件:\
-
请学习如何格式化您的代码!
标签: c++ recursion binary-tree out