从文件中读取名称以插入二叉树的问题

时间:2014-07-16 01:23:44

标签: c file-io binary-tree scanf feof

从名称文件中读取,我试图将这些名称放入二叉搜索树中。但由于某种原因,当我读取文件时,我开始使用随机垃圾文件节点:

TreeNode* read_from_file(const char* file){
    File *fp = fopen(file,"r");
    char buffer[MAX_NAME_LEN];
    TreeNode *t = NULL;

    t = insert(t,buffer); //insert is just your standard function for creating a binary tree

    while(!feof(fp)){
          fscanf(fp,"%s",buffer);
          insert(t,buffer);
          }

    return t;
    fclose(fp);
}

当我打印出树时,我在列表中看到一个看似随机的节点,例如'{或ÐFÀ>当输入的文件只有像bob matt和nick这样的名字时,以及名称节点。

1 个答案:

答案 0 :(得分:0)

在填充任何内容之前插入buffer。随机垃圾就是你自己做任何事情之前在该阵列中发生的事情。

明显的解决方案:删除第一个insert(事实上,我无法想到它存在的原因。)因为你需要在某处保存起始节点t,最后将它返回,你需要重新思考你的循环。将虚拟字符串插入“root”(但不使用未初始化的buffer!),或在循环之前执行fscanf