将二进制树结构写入C中的文件

时间:2016-09-30 21:59:15

标签: c binary-search-tree

您好我正在尝试将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语句说成废话,它也不会在递归调用之后写任何东西。

2 个答案:

答案 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)

编辑:Tanguy打败了我。虽然他的代码肯定有效,但我认为最好将文件保留为不同的功能。

问题是您尝试打开已打开的文件,因此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}}