2016-12-01 44 views
0

我正嘗試使用鏈接列表構建二進制搜索樹。所以我的鏈接列表的結構是:讀取鏈接列表節點內的char數組?

typedef struct node{ 
    char english[20]; 
    char span[60]; 
    struct node *left; 
    struct node *right; 
} BST; 

我將如何訪問節點內的字符數組來修改它?可以說,如果我有一個char english[],我想將它複製到節點內的數組中,我該怎麼做?我用這些線但不知道他們是否正確?

int counter = 0; 
    while(array[counter] != ' ') 
    { 
     node.english[counter] = array[counter]; 
     counter++; 
    } 

任何反饋將不勝感激。

+0

什麼是'node'?你有沒有試過*建立它?編譯器告訴你什麼? [橡皮鴨](https://en.wikipedia.org/wiki/Rubber_duck_debugging)告訴你什麼? –

回答

1

我猜node的類型BST *。在這種情況下,您應該使用->訪問它。

類似:

int counter = 0; 
while(array[counter] != ' ') 
{ 
    node->english[counter] = array[counter]; 
    counter++; 
} 

這種解決方案的問題是,它是不受保護的。如果數組比英文成員長,則可能會發生緩衝區溢出。另外,你用英文得到的字符串可能不是null結尾。

使用try strlcat庫函數:

strlcat(node->english, array, sizeof(node->english);