【问题标题】:HashTable overWrite哈希表覆盖
【发布时间】:2015-04-09 08:44:13
【问题描述】:

我正在尝试在 c 中创建一个哈希表,但是当我尝试在表中插入元素时遇到了一个小问题。

当我尝试像这样插入 Pairs 时,一切正常。

{
    char c1[] = "www.google.com";
    char c2[] =  "8.8.8.8";
    char c3[] = "www.yahoo.com";
    char c4[] =  "67.195.160.76";
    char c5[] = "www.olx.ro";
    char c6[] = "192.228.79.201";
    put(tabel, c1, c2 , sizeof(TPair), f);
    put(tabel, c3, c4, sizeof(TPair), f);
    put(tabel, c5, c6, sizeof(TPair), f);

    AfiTD(tabel);
}

但是当我尝试从文件中读取某些内容时,当前插入会覆盖之前的插入;

TPair 结构包含两个 char* 字段:键和值。 强制转换为 (void*) 是必需的,因为我必须在哈希表中使用通用列表。

http://gyazo.com/648e3aa0b06fe662f18b337993271eed http://gyazo.com/9a1f1613ed70572ce3132c8cc1213ce5

【问题讨论】:

  • 您的代码需要更好的变量名。不可能理解“cod”、“aux”、“aux2”、“aL”、“rez”等应该做什么。为了你和其他人一样,让他们更容易理解;)

标签: c list hashtable


【解决方案1】:

无需过多查看您的代码;您是否将键/值的内容复制到内部数据结构中?否则,您可能会存储一个指向发生变化的数据的指针,从而搞砸您的查找。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2017-05-02
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多