BEZEICHNUNG¶
qsort, qsort_r - ein Feld sortieren
ÜBERSICHT¶
#include <stdlib.h>
 
void qsort(void *basis, size_t nmemb, size_t groesse,
           int (*vergleich)(const void *, const void *));
 
void qsort_r(void *basis, size_t nmemb, size_t groesse,
           int (*vergleich)(const void *, const void *, void *),
           void *argument);
 
Mit Glibc erforderliche Makros (siehe 
feature_test_macros(7)):
 
qsort_r(): _GNU_SOURCE
BESCHREIBUNG¶
Die Funktion 
qsort() sortiert ein Feld mit 
nmemb Elementen der
  Größe 
groesse. Das Argument 
basis zeigt auf den Anfang
  des Feldes.
Die Inhalte des Feldes werden in aufsteigender Reihenfolge sortiert, bezogen auf
  eine Vergleichsfunktion, auf die 
vergleich zeigt. Diese wird mit zwei
  Argumenten aufgerufen, die auf die zu vergleichenden Objekte zeigen.
Die Vergleichsfunktion muss eine Ganzzahl zurückgeben, die kleiner, gleich
  oder größer Null ist, je nachdem, ob das erste Argument kleiner,
  gleich oder größer als das zweite ist. Wenn zwei Inhalte des Feldes
  gleich sind, ist ihre Reihenfolge unbestimmt.
Die Funktion 
qsort_r() ist mit 
qsort() identisch, außer, dass
  die Vergleichsfunktion 
compar ein drittes Argument entgegennimmt. An
  die Vergleichsfunktion wird ein Zeiger per 
argument übergeben. Auf
  diese Weise benötigt die Vergleichsfunktion keine globalen Variablen, um
  beliebige Argumente weiterzureichen und ist daher ablaufinvariant und sicher
  für die Verwendung in Threads.
RÜCKGABEWERT¶
Die Funktionen 
qsort() und 
qsort_r() geben keinen Wert
  zurück.
VERSIONEN¶
qsort_r() wurde Glibc in Version 2.8 hinzugefügt.
Die Funktion 
qsort() ist konform mit SVr4, 4.3BSD, C89 und C99.
ANMERKUNGEN¶
Bibliotheksroutinen, die als Argument 
vergleich für 
qsort()
  brauchbar sind, schließen 
alphasort(3) und 
versionsort(3)
  ein. Um C-Zeichenketten zu vergleichen, rufen Sie 
strcmp(3) auf, wie es
  im folgenden Beispiel gezeigt wird.
BEISPIEL¶
Ein Beispiel für den Gebrauch finden Sie unter 
bsearch(3).
 
Ein weiteres Beispiel ist das folgende Programm, das Zeichenketten sortiert, die
  als Befehlszeilen-Argumente übergebenen werden:
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int
cmpstringp(const void *p1, const void *p2)
{
    /* Die tatsächlichen Argumente dieser Funktion sind »Zeiger auf
       Zeiger auf char«, strcmp(3)-Argumente sind aber »Zeiger auf
       char«, daher wird im Folgenden umgewandelt und zurückverfolgt*/
    return strcmp(* (char * const *) p1, * (char * const *) p2);
}
int
main(int argc, char *argv[])
{
    int j;
    if (argc < 2) {
	fprintf(stderr, "Aufruf: %s <Zeichenkette>...\n", argv[0]);
	exit(EXIT_FAILURE);
    }
    qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);
    for (j = 1; j < argc; j++)
        puts(argv[j]);
    exit(EXIT_SUCCESS);
}
SIEHE AUCH¶
sort(1), 
alphasort(3), 
strcmp(3), 
versionsort(3)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
  
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
  gemeldet werden können, finden sich unter
  
http://www.kernel.org/doc/man-pages/.
 
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
  <krd@gulu.net> und Chris Leick <c.leick@vollbio.de> erstellt.
 
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public
  License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird
  KEINE HAFTUNG übernommen.
 
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
  Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.