2014-07-16 4 views
-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); 
} 

그때 내가 같은 내 목록에 보이는 임의의 노드를 얻고 트리를 인쇄 할 때 '{또는 DFA > 입력 된 파일의 이름이 bob matt 및 nick과 같은 경우 이름 노드와 함께.

+0

그래서이 정크 노드는 항상 루트에 있습니까? 귀하의 질문에 확실하지 않습니다. –

답변

0

아무 것도 기입하기 전에 buffer을 삽입하십시오. 랜덤 쓰레기는 여러분이 직접 그 배열을 사용하기 전에 배열에있을 것입니다.

명백한 해결책 : 먼저 insert을 제거하십시오. (실제로 어쨌든 그 이유는 생각할 수 없습니다.) 시작 노드 t을 어딘가에 저장해야하므로 마지막에 반환하려면 루프를 다시 생각해 봐야합니다. 더미 문자열을 '루트'로 삽입하거나 (초기화되지 않은 buffer!을 사용하지 마십시오!) 루프 전에 fscanf을 수행하십시오.

+0

아하나. 그것을 지워 줘서 고마워. 첫 삽입 전에 fscanf를 실행하고 원하는 결과를 얻었다. – user47835