#include <stdlib.h>
void qsort( void *base, size_t num, size_t width,
int( *compare ) ( const void *elem1, const void *elem2 ) );
base zeigt auf das erste Element des Arrays. int compare(const (void *) elem1, const (void *) elem2 );Diese Routine sollte die als elem1 und elem2 übergebenen Elemente miteinander vergleichen und eines der folgenden Ergebnisse liefern:
Wert Bedeutung < 0 elem1 < elem2 = 0 elem1 == elem2 > 0 elem1 > elem2Die Art und Weise des Vergleichs ist nicht vorgeschrieben.
Beispiel:
Sortierung der Kommandozeilen-Parameter in alphanumerischer Reihenfolge
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void *arg1, const void *arg2 )
{
/* Vergleich der beiden Zeichenketten */
return strcmp( * ( char** ) arg1, * ( char** ) arg2 );
}
int main( int argc, char **argv )
{
int i;
/* Programmnamen (argv[0]) entfernen */
argv++; argc--;
/* Aufrufparameter mittels qsort() sortieren */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
/* Ausgabe der sortierten Liste */
for( i = 0; i < argc; i++ )
printf("%s ", argv[i]);
printf("\n");
return 0;
}