Ich habe einen Komparator-Funktion, die 1 zurückgibt, 0 oder -1, erklärt sich wie folgt:Aufruf qsort Komparator
int multiPrecisionCompare(const DIGIT_T a[], const DIGIT_T b[], int32_t length);
wo DIGIT_T
ist int8_t
.
Ich möchte eine Funktion qsort
aufrufen, aber ich habe ein Problem zu verstehen, was ich ändern oder wie die Komparatorfunktion im Inneren aufrufen muss.
qsort(bigArray->x, 8,30 , <-what here?????->);
i
int multiprecisionCompare(const DIGIT_T a[], const DIGIT_T b[], int32t length)
{
while(length--) { // little endian
if(a[length] > b[length])
return 1;
if(a[length] < b[length])
return -1;
}
return 0;
}
point * bigArray = (point *)(malloc(K*sizeof(point)));
CreateListAndOrder(lots of parameters) // this fills the bigArray unsorted
/* point is a structure of X,Y,Z where each of this is DIGIT_T */
qsort((void *)bigArray, K, sizeof(point), cmp);
ich mag es sortieren nach X-Koordinate, aber die durch int32t Länge gelöst wird, dass sie nur die erste Koordinate mit von diesen struct
int cmp(const void *a, const void *b){
return multiPrecisionCompare((const DIGIT_T*)a, (const DIGIT_T*)b, DIGIT_LENGTH);
//return multiPrecisionCompare(*(const DIGIT_T**)a, *(const DIGIT_T**)b, DIGIT_LENGTH);
}
'struct Daten {DIGIT_T * n; int32_t Länge; }; '..' int multiPrecisionCompare (const struct Daten * a, const struct Daten * b); 'oder' length 'übergeben, um die Funktion mit der globalen Variable zu vergleichen. – BLUEPIXY
Gibt es in Ihrem Compiler-Unterstützung 'qsort_s (Basis, nmemb, Größe, compar, Kontext);'? – chux
Zeigen Sie 'Punkt'. vielleicht 'Rückkehr multiPrecisionCompare (((Punkt *) a) -> x ((Punkt *) b) -> x, DIGIT_LENGTH);' – BLUEPIXY