我有一个问题。
这是我的结构:
typedef struct cell{
char *mot;
char *traduction;
struct cell *suivant;
}cellule_t;
这是我调用函数remplissage_hachage
int main()
{
char *buffer = "hello";
cellule_t **tabMajeur;
tabMajeur = malloc(HASH_MAX * sizeof(cellule_t *));
memset(tabMajeur,0 ,HASH_MAX);
FILE * file = fopen("fichier.txt","r");
remplissage_hachage(tabMajeur,"fichier.txt");
}
函数remplissage_hachage以tabMajeur作为参数:
void remplissage_hachage (cellule_t **tabMajeur,char *nomFichier)
{
char string1[20];
cellule_t *copy;
unsigned int indice;
int boolean = 0;
char *string2, *string3;
cellule_t *c;
FILE *fichier= fopen(nomFichier,"r");
while(fgets(string1,100,fichier) != NULL)
{
string2 = strtok(string1,";");
string3 = strtok(NULL,";");
printf("string2 %s\n",string2);
printf("string3 %s\n",string3);
int indice = recherche(tabMajeur,string2,&boolean,c);
if(boolean != 1)
{
copy = tabMajeur[indice];
tabMajeur[indice] = creationCellule(string2,string3);
tabMajeur[indice]->suivant = copy;
}
}
}
问题在于,在main中调用remplissage_hachage之后,即使我将其作为指针传递,tabMajeur也不会被修改。 你能告诉我为什么吗?
答案 0 :(得分:1)
您是否在调用recherche()之后检查了boolean!= 1? 同样,您也不必要两次打开文件,一次是在main()中,一次是在remplissage_hachage()中。
如果'boolean'具有正确的值,则另一个可能的失败点是while条件,如果文件为空,它将失败。