Bonjour,
Bon voila j'ai un tableau qui contient des strings (un ensemble de string par case)
j'essaye de faire un qsort sur ce tableau et d'afficher les elements sous un format particulier :
voici ma methode methode_compare qui dit comment ordonner les elements du tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 qsort(copieBD_EMPRUNTS, nbEmprunts, sizeof(InfoEmprunt), methode_compare); for (i = 0; i < nbEmprunts; ++i) { strncpy(chaine1, getEmprunteur(copieBD_EMPRUNTS[i]), 10); strncpy(chaine2, getAuteur(copieBD_EMPRUNTS[i]), 8); sprintf(buffer, " %-11s:: [ %-9s] < %s >\n", chaine1, chaine2, getTitre(copieBD_EMPRUNTS[i])); ajouterDansMessage ( fluxMessages, buffer ); }
Le probleme est que lorsque mon tableau contient 19 elements ou plus, le qsort me renvoi un tableau vide, le getEmprunteur contient un assert qui arrete le programme parce que l'emprunt est NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 int methode_compare (const void* a, const void* b) { InfoEmprunt *pa = (InfoEmprunt*)a; InfoEmprunt *pb = (InfoEmprunt*)b; InfoEmprunt emprunt1 = *pa; InfoEmprunt emprunt2 = *pb; int comparaison; if (!(strcmp(getEmprunteur(emprunt1), getEmprunteur(emprunt2)))) { if (!(strcmp(getAuteur(emprunt1), getAuteur(emprunt2)))) { comparaison = strcmp(getTitre(emprunt1), getTitre(emprunt2)) > 0; }else{ comparaison = strcmp(getAuteur(emprunt1), getAuteur(emprunt2)) > 0; } }else{ comparaison = strcmp(getEmprunteur(emprunt1), getEmprunteur(emprunt2)) > 0; } return comparaison; }
Je compile avec gcc et il n'y a aucun probleme de compilation, je comprend pas pourquoi exactement 19 elements, mon tableau fait 300 de taille.
Merci de m'aider a resoudre ce probleme, je sais pas quoi faire.
Partager