添加到哈希表而不覆盖

时间:2013-11-17 02:41:30

标签: c hashtable

以下是我遇到的问题:

我能够回显设置的最后一个变量,而不是之前的变量 所以,如果x =欢迎,我回复$ x ...我得到欢迎。 但是,如果我做xx = Back ...它会删除原来的x

1 个答案:

答案 0 :(得分:0)

您将指针存储在表中,但指针指向一个只需重复使用的局部变量...您将覆盖表中指向的键和值。

在Node结构中,复制指针指向的内容,以便保留一个不会被覆盖的副本。

由于您正在处理字符串,因此解决此问题的一种简单方法是替换(在Table_add中):

p->key = key;
p->value = value;

p->key = strdup(key);
p->value = strdup(value);

但是如果你这样做,你需要确保在释放节点之前free()这两个值。