[C] insere mot table de hachage
stroumpf
Messages postés
289
Date d'inscription
Statut
Membre
Dernière intervention
-
beslae Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
beslae Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un probleme au niveau de la fonction : void insere_th(Liste **TableHash, const char *mot)
qui insere un mot dans une table de hachage : elle verifi si le mot qu'on veut inserer est deja dans la table on incremente donc la frequence du mot .
il l'affiche une erreur de segmentation.
aidez moi svp
merci
j'ai un probleme au niveau de la fonction : void insere_th(Liste **TableHash, const char *mot)
qui insere un mot dans une table de hachage : elle verifi si le mot qu'on veut inserer est deja dans la table on incremente donc la frequence du mot .
il l'affiche une erreur de segmentation.
aidez moi svp
merci
#include <stdio.h> #include <string.h> #include <ctype.h> #include <stdlib.h> #define BUFFSIZE 64 #define FNAME "d:\\test.txt" #define TAILLEHASH 307 typedef struct L { int freq; char mot[50]; struct L *suivant; } Liste; char* get_word(FILE *fdesc, char *buff, size_t size) { char *ret=NULL; if( fdesc!=NULL && buff!=NULL && size>0 ) { int c; int i=0; while( ret==NULL && i<size && (c=fgetc(fdesc))!=EOF ) { if( isalpha(c) ) { buff[i]=c; i++; } else if( i>0 ) { /* mot */ buff[i]='\0'; ret=buff; } } } return ret; } unsigned int hash_cle(const char * mot) { unsigned int val = 0; for(; *mot != '\0'; ++mot) { val = *mot + 31 * val; } return val % TAILLEHASH; } void insere_th(Liste **TableHash, const char *mot) { TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *)); /* calcule le hash du mot */ unsigned int idx = hash_cle(mot); /* recherche du mot */ Liste *p = TableHash[idx]; if(strcmp(p->mot, mot)==0) p->freq++; free(TableHash); } int main(void) { FILE *fdesc=fopen(FNAME,"r"); Liste **TableHash; if( fdesc ) { char buff[BUFFSIZE]; char prec[BUFFSIZE]; if( get_word(fdesc,prec,BUFFSIZE) ) { while( get_word(fdesc, buff, BUFFSIZE) ) { //printf("%s %s\n",prec,buff); char s3[BUFFSIZE * 2]; sprintf(s3, "%s %s", prec, buff); puts(s3); strncpy( prec,buff,BUFFSIZE); insere_th(TableHash,s3); } } fclose(fdesc); } return 0; }
A voir également:
- [C] insere mot table de hachage
- Table ascii - Guide
- Trousseau mot de passe iphone - Guide
- Table des matières word - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
5 réponses
Bah normal, t essaye de modifier le membre freq de la structure Liste pointé par p or p pointe vers un truc inconnue encore (tableau de quelque chose a l index idx qui connais pas :P )
stroumpf
Messages postés
289
Date d'inscription
Statut
Membre
Dernière intervention
2
donc comment faire, comment modifier, aucune idée moi ^^
Je sais pas mais moi j aurais mi un petit for( ) pour parcourir les index idx en plus je le vois null par d autre en variable globale ton idx !!
quelqu un avait dit :
declarer les variable, initialiser les variables, et apres travailler ladessus
quelqu un avait dit :
declarer les variable, initialiser les variables, et apres travailler ladessus
Bah faut deja que tu sache ce que tu veux faire avec ton idx, pourquoi il est la ? il sert a quoi ?? parceque moi non plus je comprend pas ce que tu veux faire o fait val+=31 + *mot ??
juste une petite question c est quoi le 31 ??
juste une petite question c est quoi le 31 ??
Plus concretement tu peux m'expliquer ce que tu veux faire ...
voila t as une liste chainée, A->B->C .... sur chaque feuille il y a un mot une fréquence et le suivant, tu insert des feuilles et tous normal, c est quoi le 307, le 31, j veux dire ca vient d ou ??
voila t as une liste chainée, A->B->C .... sur chaque feuille il y a un mot une fréquence et le suivant, tu insert des feuilles et tous normal, c est quoi le 307, le 31, j veux dire ca vient d ou ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j ai lu vite fais ca, mais je vois toujours pas trop ce que tu veux faire !!
https://fr.wikipedia.org/wiki/Table_de_hachage
https://fr.wikipedia.org/wiki/Table_de_hachage