qsort(3) Library Functions Manual qsort(3) BEZEICHNUNG qsort, qsort_r - ein Feld sortieren BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include 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 Grosse 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 zuruckgeben, die kleiner, gleich oder grosser Null ist, je nachdem, ob das erste Argument kleiner, gleich oder grosser als das zweite ist. Wenn zwei Inhalte des Feldes gleich sind, ist ihre Reihenfolge unbestimmt. Die Funktion qsort_r() ist mit qsort() identisch, ausser, dass die Vergleichsfunktion compar ein drittes Argument entgegennimmt. An die Vergleichsfunktion wird ein Zeiger per argument ubergeben. Auf diese Weise benotigt die Vergleichsfunktion keine globalen Variablen, um beliebige Argumente weiterzureichen und ist daher ablaufinvariant und sicher fur die Verwendung in Threads. RUCKGABEWERT Die Funktionen qsort() und qsort_r() geben keinen Wert zuruck. ATTRIBUTE Siehe attributes(7) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +--------------------------------+-------------------------+-----------+ |Schnittstelle | Attribut | Wert | +--------------------------------+-------------------------+-----------+ |qsort(), qsort_r() | Multithread-Fahigkeit | MT-Sicher | +--------------------------------+-------------------------+-----------+ STANDARDS qsort() C11, POSIX.1-2008. GESCHICHTE qsort() POSIX.1-2001, C89, SVr4, 4.3BSD. qsort_r() Glibc 2.8. ANMERKUNGEN Um C-Zeichenketten zu vergleichen, rufen Sie strcmp(3) auf, wie es im folgenden Beispiel gezeigt wird. BEISPIELE Ein Beispiel fur den Gebrauch finden Sie unter bsearch(3). Ein weiteres Beispiel ist das folgende Programm, das Zeichenketten sortiert, die als Befehlszeilen-Argumente ubergebenen werden: #include #include #include static int cmpstringp(const void *p1, const void *p2) { /* Die tatsachlichen Argumente dieser Funktion sind >>Zeiger auf Zeiger auf char<<, strcmp(3)-Argumente sind aber >>Zeiger auf char<<, daher wird im Folgenden umgewandelt und zuruckverfolgt. */ return strcmp(*(const char **) p1, *(const char **) p2); } int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr, "Usage: %s ...\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) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Patrick Rother , Chris Leick und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.8 2. Mai 2024 qsort(3)