Jennesta
Erfahrenes Mitglied
Hallo,
(int(*)(const void*,const void*))strcmp) soll im Grunde heißen, dass du der qsort-Funktion als Argument eine Funktion mit Rückgabewert int, sowie zwei Parametern des Typs void* übergibst.
Die qsort-Funktion nutzt diese Funktion um deine Werte zu sortieren, da sie gegebenenfalls nicht weiß, wie sie bei eigenen Typen zu verfahren hat. Als simples Beispiel schaue mal über folgenden Code. Du castest die Parameter einfach zu den Typen, die du vergleichen willst (in deinem Falle (char*)) und vergleichst dann. Z.B. mit strcmp.
Die qsort-Funktion erwartet als ersten Parameter übrigens die Basis deines Arrays. Wenn ich das richtig verstehe, was du gemacht hast, dann ist token aber kein Array. Schau dir nochmal hier das Beispiel der qsort-Funktion an
Grüße,
Jennesta
(int(*)(const void*,const void*))strcmp) soll im Grunde heißen, dass du der qsort-Funktion als Argument eine Funktion mit Rückgabewert int, sowie zwei Parametern des Typs void* übergibst.
Die qsort-Funktion nutzt diese Funktion um deine Werte zu sortieren, da sie gegebenenfalls nicht weiß, wie sie bei eigenen Typen zu verfahren hat. Als simples Beispiel schaue mal über folgenden Code. Du castest die Parameter einfach zu den Typen, die du vergleichen willst (in deinem Falle (char*)) und vergleichst dann. Z.B. mit strcmp.
C++:
int compareMyType (const void * a, const void * b)
{
if ( *(MyType*)a < *(MyType*)b ) return -1;
if ( *(MyType*)a == *(MyType*)b ) return 0;
if ( *(MyType*)a > *(MyType*)b ) return 1;
}
Die qsort-Funktion erwartet als ersten Parameter übrigens die Basis deines Arrays. Wenn ich das richtig verstehe, was du gemacht hast, dann ist token aber kein Array. Schau dir nochmal hier das Beispiel der qsort-Funktion an
Grüße,
Jennesta