Provided by: manpages-de-dev_4.21.0-2_all bug

BEZEICHNUNG

       qsort, qsort_r - ein Feld sortieren

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <stdlib.h>

       void qsort(void basis[.groesse * .nmemb], size_t nmemb, size_t groesse,
                  int (*vergleich)(const void [.groesse], const void [.groesse]));
       void qsort_r(void basis[.groesse * .nmemb], size_t nmemb, size_t groesse,
                  int (*vergleich)(const void [.groesse], const void [.groesse], void *),
                  void *argument);

   Mit Glibc erforderliche Feature-Test-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 zur Glibc 2.8 hinzugefügt.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌───────────────────────────────────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├───────────────────────────────────────────────────────┼───────────────────────┼─────────┤
       │qsort(), qsort_r()                                     │ Multithread-Fähigkeit │ MT-Safe │
       └───────────────────────────────────────────────────────┴───────────────────────┴─────────┘

STANDARDS

       qsort(): POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.

ANMERKUNGEN

       Um C-Zeichenketten zu vergleichen, rufen Sie strcmp(3) auf, wie es im  folgenden  Beispiel
       gezeigt wird.

BEISPIELE

       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(*(const char **) p1, *(const char **) p2);
       }

       int
       main(int argc, char *argv[])
       {
           if (argc < 2) {
               fprintf(stderr, "Aufruf: %s <Zeichenkette>…\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);

           for (size_t j = 1; j < argc; j++)
               puts(argv[j]);
           exit(EXIT_SUCCESS);
       }

SIEHE AUCH

       sort(1), alphasort(3), strcmp(3), versionsort(3)

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde  von  Patrick  Rother  <krd@gulu.net>,
       Chris  Leick  <c.leick@vollbio.de>  und  Mario  Blättermann <mario.blaettermann@gmail.com>
       erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version  3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.