2016-12-01 21 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);