Utilisation de qsort() en c
Bon réveil a tout le monde
je rencontre un problème quand a l'utilisation de qsort()
Le but de mon programme est de trier un fichier qui me sert de dictionnaire
Voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare (void const *a, void const *b)
{
char *const *pa = a;
char *const *pb = b;
return strcmp (*pa, *pb);
}
int Nb_mot()
{
char c[15];
FILE *file;
int compteur=0;
file=fopen("dictionnaire","r");
while (!feof(file))
{
fgets(c, 17, file);
compteur++;
}
fclose(file);
printf("%d",compteur);
return compteur;
}
int main (void)
{
int nbmot,i;
nbmot=Nb_mot();
FILE *file;
printf("il y a %d mots dans le dictionnaire ",nbmot);
char **c=malloc(nbmot*sizeof(char));
for (i=0;i<nbmot;i++)
{
c[i]=malloc (15*sizeof(char));
}
char const *tab[] = { "world", "hellos", "hello" };
char chaine[15];
file=fopen("dictionnaire","r");
for (i=0;i<nbmot;i++)
{
fgets(chaine, 17, file);
strcpy(c[i],chaine);
printf("%s",c[i]);
}
//qsort (c, sizeof c / sizeof *c, sizeof *c, compare);
printf("%s",c[1]);
getchar();
} |
Mon tableau de chaines contient bien tout les mots de mon fichier
Lorsque je lance mon programme sa plante
J'ai bien sur mis un printf avant & après qsort pour vérifier que c'était bien l'appel la cause
Par contre si je fais appel avec tab au lieu de c, j'obtient bien un tri
Est du au const? ou a une erreur de pointeur?
Ou plus probable une erreur de ma part ?
Pas moyen que je trouve pourquoi sa ne marche pas
Quelqu'un peut il m'aider?
Merci de votre aide et bonne journée a vous