-1

名前のファイルから読み取って、それらの名前を二分探索木に入れようとしています。しかし、何らかの理由でファイルを読み取ると、ランダムなジャンク ファイル ノードから開始されます。

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);
}

次にツリーを出力すると、入力ファイルに bob matt や nick などの名前しかない場合、'{ または ÐFÀ> などの一見ランダムなノードが名前ノードとともにリストに表示されます。

4

1 に答える 1

0

buffer何かを入れる前に挿入します。ランダムなゴミは、自分で何かをする前にその配列にたまたまあるものです。

明白な解決策: 最初の を削除しinsertます。(実際のところ、それが存在する理由は思いつきません。)開始ノードtをどこかに保存する必要があるため、最後にそれを返すには、ループを再考する必要があります。'root' としてダミー文字列を挿入する (ただし、初期化されていないbuffer! は使用しない) かfscanf、ループの前に実行します。

于 2014-07-16T21:10:11.790 に答える