Я реализую хеш-таблицу, которая должна хранить указатели на связанный список узлов, содержащих слова и их переводы на конкретный язык.
Для этого я читаю из текстового файла слова,загрузить их в узлы, хешировать их и вставить в таблицу.В конце функции init я вижу таблицу, правильно инициализированную через ddd.Однако при вызове следующей функции в main и передаче таблицы она фактически отправляет только указатель на пустой узел вместо таблицы.Куда это делось?Изменился ли его адрес?Создается ли новый указатель при передаче в функцию?
//main.c
//Cellule definition
typedef struct cellule{
char * mot;
char * trad;
struct cellule * suiv;
}cellule_t;
//Init and Search
cellule_t * rechercheTable(cellule_t ** tab, const char * mot){
int ind=hash_string(mot);
cellule_t * cour = tab[ind];
bool trouve=false;
while(cour!=NULL && trouve==false){
if(cour->mot==mot){
trouve=true;
}
else cour=cour->suiv;
}
return cour;
}
void initTable(cellule_t ** t){
FILE * fichier;
cellule_t *cour;
char ligne[60];
char * sep;
int i,ind;
for(i=0;i<HASH_MAX;i++){
t[i]=NULL;
}
fichier = fopen("anglais.txt","r");
if(fichier)
{
fscanf(fichier,"%s",ligne);
while(!feof(fichier))
{
cour=(cellule_t *)malloc(sizeof(cellule_t));
sep=strtok(ligne,";");
cour->mot=(char *)malloc(sizeof(char)*(((int)strlen(sep))+1));
if(sep!=NULL)
strcpy(cour->mot,sep);
ind=hash_string(sep);
sep=strtok(NULL,"\n");
if(sep!=NULL){
cour->trad=(char *)malloc(sizeof(char)*(((int)strlen(sep))+1));
strcpy(cour->trad,sep);
}
cour->suiv=t[ind];
t[ind]=cour;
fscanf(fichier,"%s",ligne);
}
fclose(fichier);
}
}
int main(){
cellule_t * tableMajeure[HASH_MAX];
cellule_t * cour;
initTable(tableMajeure);
cour = rechercheTable(tableMajeure,"hello");
printf("Resultat de la recherche de hello : %s \n",cour->mot);
return 0;
}
Tl; dr: почему tableMajeure прекрасно получается из Init, но передается пустым в Recherche?Спасибо за вашу помощь