2015-04-09 3 views
-1

Я пытаюсь сделать хеш-таблицу в c, но у меня есть небольшая проблема, когда я пытаюсь вставить элементы в таблицу.HashTable overWrite

Когда я пытаюсь вставить такие пары, все работает отлично.

{ 
    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 содержит два символа * поля: ключ и значение. Требуется, чтобы использовать (void *), потому что мне нужно использовать общие списки в Hash Table.

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

+0

Ваш код нуждается в улучшенных именах переменных. Невозможно понять, что делать «трески», «aux», «aux2» «aL», «rez» и т. Д. Для вас так же, как и все остальные, сделайте их более понятными;) –

ответ

0

, не глядя на ваш код слишком много; копируете ли содержимое ключа/значение во внутреннюю структуру данных? В противном случае вы можете сохранить указатель на данные, которые меняются, прикручивая ваши поисковые запросы.