Bonjour,
J'essaie de trier deux tableaux simultanément, ie. j'ai envie que les opérations faites sur l'un soient faites sur l'autre aussi. Un équivalent de multisort en php.
Je veux passer par la fonction qsort.
Le format de base est un tableau à deux entrées :
int Q[100][2];
la syntaxe pour appeler qsort que j'utilise est :
qsort(Q, 100, sizeof(int*), comp);
Mais j'ai un souci avec la fonction de comparaison. J'ai abouti au code suivant :
int comp(const void* a, const void* b){
int* ia = *((int**) a);
int* ib = *((int**) b);
return ia[0] - ib[0];
}
qui compile, mais génère un segfault.
Mon raisonnement est que vu que les valeurs du tableaux (qui sont des int*) sont transmis via leur adresse, il faut les typecaster en int**, puis récupérer leur valeur par déférencement. D'où le *((int**) x).
Quelqu'un peut m'indiquer d'où vient l'erreur ?
Saros