从名称文件中读取,我试图将这些名称放入二叉搜索树中。但由于某种原因,当我读取文件时,我开始使用随机垃圾文件节点:
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这样的名字时,以及名称节点。
答案 0 :(得分:0)
在填充任何内容之前插入buffer
。随机垃圾就是你自己做任何事情之前在该阵列中发生的事情。
明显的解决方案:删除第一个insert
。 (事实上,我无法想到它存在的原因。)因为你需要在某处保存起始节点t
,最后将它返回,你需要重新思考你的循环。将虚拟字符串插入“root”(但不使用未初始化的buffer
!),或在循环之前执行fscanf
。