.\" -*- coding: UTF-8 -*- .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" .\" Modified 1993-03-29, David Metcalfe .\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu) .\" 2006-01-15, mtk, Added example program. .\" Modified 2012-03-08, Mark R. Bannister .\" and Ben Bacarisse .\" Document qsort_r() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH QSORT 3 "1. November 2020" "" Linux\-Programmierhandbuch .SH BEZEICHNUNG qsort, qsort_r \- ein Feld sortieren .SH ÜBERSICHT .nf \fB#include \fP .PP \fBvoid qsort(void *\fP\fIbasis\fP\fB, size_t \fP\fInmemb\fP\fB, size_t \fP\fIgroesse\fP\fB,\fP \fB int (*\fP\fIvergleich\fP\fB)(const void *, const void *));\fP .PP \fBvoid qsort_r(void *\fP\fIbasis\fP\fB, size_t \fP\fInmemb\fP\fB, size_t \fP\fIgroesse\fP\fB,\fP \fB int (*\fP\fIvergleich\fP\fB)(const void *, const void *, void *),\fP \fB void *\fP\fIargument\fP\fB);\fP .fi .PP .RS -4 Mit Glibc erforderliche Feature\-Test\-Makros (siehe \fBfeature_test_macros\fP(7)): .RE .PP .ad l \fBqsort_r\fP(): _GNU_SOURCE .ad b .SH BESCHREIBUNG Die Funktion \fBqsort\fP() sortiert ein Feld mit \fInmemb\fP Elementen der Größe \fIgroesse\fP. Das Argument \fIbasis\fP zeigt auf den Anfang des Feldes. .PP Die Inhalte des Feldes werden in aufsteigender Reihenfolge sortiert, bezogen auf eine Vergleichsfunktion, auf die \fIvergleich\fP zeigt. Diese wird mit zwei Argumenten aufgerufen, die auf die zu vergleichenden Objekte zeigen. .PP 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. .PP Die Funktion \fBqsort_r\fP() ist mit \fBqsort\fP() identisch, außer, dass die Vergleichsfunktion \fIcompar\fP ein drittes Argument entgegennimmt. An die Vergleichsfunktion wird ein Zeiger per \fIargument\fP ü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. .SH RÜCKGABEWERT Die Funktionen \fBqsort\fP() und \fBqsort_r\fP() geben keinen Wert zurück. .SH VERSIONEN \fBqsort_r\fP() wurde Glibc in Version 2.8 hinzugefügt. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbw18 lb lb l l l. Schnittstelle Attribut Wert T{ \fBqsort\fP(), \fBqsort_r\fP() T} Multithread\-Fähigkeit MT\-Safe .TE .sp 1 .SH "KONFORM ZU" \fBqsort\fP(): POSIX.1\-2001, POSIX.1\-2008, C89, C99, SVr4, 4.3BSD. .SH ANMERKUNGEN Um C\-Zeichenketten zu vergleichen, rufen Sie \fBstrcmp\fP(3) auf, wie es im folgenden Beispiel gezeigt wird. .SH BEISPIELE Ein Beispiel für den Gebrauch finden Sie unter \fBbsearch\fP(3). .PP Ein weiteres Beispiel ist das folgende Programm, das Zeichenketten sortiert, die als Befehlszeilen\-Argumente übergebenen werden: .PP .EX #include #include #include 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 …\en", argv[0]); exit(EXIT_FAILURE); } qsort(&argv[1], argc \- 1, sizeof(char *), cmpstringp); for (int j = 1; j < argc; j++) puts(argv[j]); exit(EXIT_SUCCESS); } .EE .SH "SIEHE AUCH" \fBsort\fP(1), \fBalphasort\fP(3), \fBstrcmp\fP(3), \fBversionsort\fP(3) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können, sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother , Chris Leick und Mario Blättermann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .