Problème avec qsort (structure complexe)
Bonjour,
Après plusieurs heures de recherche toujours pas de solution, je me rends compte que je ne suis pas aussi à l'aise avec les pointeurs que je ne pensais..
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
/*
Un fichier a :
- un nom
- un descripteur de fichier
- un tableau de fichier ou NULL si ce n'est pas un répertoire
*/
struct file {
char* name;
int fd;
struct t_files* son;
};
/*
un tableau de fichiers
- sa taille
- un tableau de pointeur vers des fichiers
*/
struct t_files {
struct file** t;
int size;
}; |
Je souhaite trier selon le nom, pour cela j'ai :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
int struct_cmp_by_name(const void* a, const void*b ){
struct file *ia = (struct file*)a;
struct file *ib = (struct file*)b;
return strcmp(ia->name, ib->name);
}
int main(void) {
struct t_files* res;
/* fonction pour remplissage res (aucun problème de ce côté) */
qsort (?, ??, ???, struct_cmp_by_name);
} |
J'ai tenté de mettre différents paramètres sans succès.
Merci d'avance pour votre aide
Simplification de la structure
Je viens de finir de corriger les erreurs, je ne savais pas que mon struct file** t était inutile, y a t'il une différence ?
Code:
1 2 3 4 5
|
struct t_files {
struct file* t;
int size;
}; |
j'ai donc fais appel à
Code:
1 2
|
qsort (res->t, sizeof res->t / sizeof *res->t, sizeof *res->t, struct_cmp_by_name); |
mais le tableau n'était pas trié, en cherchant j'ai trouvé que
Code:
1 2
|
printf("%d\n", sizeof res->t / sizeof *res->t); |
donnait 0 sauf erreur de ma part, un problème dans les arguments..