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
| int compare_mots(void const *pcv1, void const *pcv2)
{
//Voici les vrais types pointés :
char const (* const mot1)[LONGMOT] = pcv1;
char const (* const mot2)[LONGMOT] = pcv2;
return strcmp(*mot1, *mot2);
}
//Note: J'ai décomposé en deux fonctions juste pour montrer
//la conversion implicite du premier paramètre
//Note: On passe le nombre de mots par pointeur, pour que la fonction puisse le modifier
void ajout2(char (*dico)[LONGMOT], char const *mot, size_t *pNbCourantMots)
{
//Copie du nouveau mot dans le tableau
strcpy(dico[*pNbCourantMots], mot);
(*pNbCourantMots)++;
//Tri en mémoire du tableau dico
qsort(dico, *pNbCourantMots, LONGMOT, compare_mots);
}
void ajout(char dico[MAXMOTS][LONGMOT], char const *mot, size_t *pNbCourantMots)
{
ajout2(dico, mot, pNbCourantMots);
} |