您好我正在尝试将BST的内容写入文件。到目前为止,我没有运气,因为它只打印根,没有别的
我的树结构看起来像这样
typedef struct node
{
char *Emp;
struct node *left;
struct node *right;
}mynode;
我的代码看起来像这样
void export(mynode *root)
{
File *fp
fp=fopen("Names.txt","w");
if(root!=NULL)
{
export(root->left);
fprintf(fp,root->Emp);
export(root->right);
}
fclose(fp);
}
我尝试使用printf来查看它是否打印它确实如此。问题是,即使我把其他fprintf语句说成废话,它也不会在递归调用之后写任何东西。
答案 0 :(得分:4)
问题可能是您每次都在export()函数的顶部创建一个新文件。
您要做的是先创建文件并将句柄传递给导出功能。例如:
void export(mynode* root)
{
File *fp
fp=fopen("Names.txt","w");
export_recursive(fp, root);
fclose(fp);
}
void export_recursive(File* fp, mynode* root)
{
if(root!=NULL)
{
export_recursive(root->left);
fprintf(fp,root->Emp);
export_recursive(root->right);
}
}
答案 1 :(得分:0)
问题是您尝试打开已打开的文件,因此null
失败并返回void export(mynode *root) {
File *fp;
fp=fopen("Names.txt","w");
exportHelper(root, fp);
fclose(fp);
}
void exportHelper(mynode *root, File *fp) {
if(root!=NULL) {
exportHelper(root->left, fp);
fprintf(fp,root->Emp);
exportHelper(root->right, fp);
}
}
。相反,你可以做这样的事情:
{{1}}