nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

hsearch --- hash table

Von: gigi (gigi at vattelappesca.it@sistrix.com) [Profil]
Datum: 10.02.2008 00:27
Message-ID: <47ae36d7$0$10621$4fafbaef@reader2.news.tin.it>
Newsgroup: it.comp.lang.c
salve stavo cercando di usare le funzioni x strutture di hash incluse
nella libc sotto linux ma nonostante mi sia letto il manuale non riesco
a capire il xkè il seguente programma non vada a buon fine
Il problema è che non mi trova elementi già inseriti tramite una
funzione, forse ciò è dovuto alla visibilità delle var locali???
ma se così come posso risolvere??
qualcuno sarebbe così gentile da spiegarmi/illuminarmi o da indicarmi
dove posso leggere/trovare una soluzione/spiegazione
x la cronaca ho provato anche hsearch_r (la versione GNU)
che permette di creare + hash table che ho definito come var globali ma
non funziona.

Inoltre vorrei sapere se consigliate qualke libreria in particolare per
usare le hash table oppure bisogna codare tutto da sè senza includere
librerie??

di seguito il codice "incriminato" :)
#include <stdio.h>
#include <search.h>

void search(char *key);
void create(void);

int main() {
char buffer[255];
hcreate(244);

create();
scanf("%s",buffer);

search(buffer);

hdestroy();
return 0;
}

void create(void) {
char a[]="aa";
char b[]="bb";
char h[]="0:40:96:b5:82:3c";

ENTRY item,find;
item.key=a;
hsearch(item,ENTER);
item.key=b;
hsearch(item,ENTER);
item.key=h;
hsearch(item,ENTER);

item.key=a;
item.data=NULL;
// questa ricerca funziona
if(hsearch(item,FIND)!=NULL) printf("trovato aa in create\n");
else printf("non trovato \n");

}

void search(char *key) {
ENTRY item;
item.key=key;
item.data=NULL;
// questa ricerca NON funziona !!!!
if(hsearch(item,FIND)!=NULL) printf("trovato\n");
else printf("non trovato \n");
}

[ Auf dieses Posting antworten ]

Antworten