.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 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 "20 lipca 2023 r." "Linux man\-pages 6.05.01" .SH NAZWA qsort, qsort_r \- sortuje tablicę .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .PP \fBvoid qsort(void \fP\fIbase\fP\fB[.\fP\fIsize\fP\fB * .\fP\fInmemb\fP\fB], size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP \fB int (*\fP\fIcompar\fP\fB)(const void [.\fP\fIsize\fP\fB], const void [.\fP\fIsize\fP\fB]));\fP \fBvoid qsort_r(void \fP\fIbase\fP\fB[.\fP\fIsize\fP\fB * .\fP\fInmemb\fP\fB], size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP \fB int (*\fP\fIcompar\fP\fB)(const void [.\fP\fIsize\fP\fB], const void [.\fP\fIsize\fP\fB], void *),\fP \fB void *\fP\fIarg\fP\fB);\fP .fi .PP .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .PP \fBqsort_r\fP(): .nf _GNU_SOURCE .fi .SH OPIS Funkcja \fBqsort\fP() sortuje tablicę \fInmemb\fP elementów o rozmiarze \fIsize\fP. Argument \fIbase\fP wskazuje na początek tablicy. .PP Zawartość tablicy jest sortowana w porządku rosnącym, zgodnie z funkcją porównawczą, określoną przez wskaźnik \fIcompar\fP. Funkcja ta jest wołana z dwoma argumentami, które wskazują na porównywane obiekty. .PP Funkcja porównująca musi zwracać liczbę całkowitą, która jest mniejsza, równa, lub większa od zera. Oznacza to wtedy, odpowiednio, że pierwszy argument jest mniejszy, równy, lub większy od drugiego. Jeśli oba porównywane elementy są jednakowe, to ich kolejność w posortowanej tablicy jest nieokreślona. .PP Funkcja \fBqsort_r\fP() jest taka sama jak \fBqsort\fP(), z wyjątkiem tego, że funkcja porównująca \fIcompar\fP przyjmuje trzeci argument. Wskaźnik podany w argumencie \fIarg\fP jest przekazywany do funkcji porównującej. W ten sposób funkcja porównująca nie potrzebuje zmiennych globalnych, by przekazywać sobie dowolne argumenty i dlatego jest bezpieczna do używana w aplikacji wielowątkowej. .SH "WARTOŚĆ ZWRACANA" Funkcje \fBqsort\fP() i \fBqsort_r\fP() nic nie zwracają. .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ .na .nh \fBqsort\fP(), \fBqsort_r\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne .TE .sp 1 .SH STANDARDY .TP \fBqsort\fP() C11, POSIX.1\-2008. .SH HISTORIA .TP \fBqsort\fP() POSIX.1\-2001, C89, SVr4, 4.3BSD. .TP \fBqsort_r\fP() glibc 2.8. .SH UWAGI Aby porównać łańcuch znaków w stylu C, funkcja porównująca może wywołać \fBstrcmp\fP(3), tak jak to pokazano w przykładzie poniżej. .SH PRZYKŁADY Jeden przykład użycia można znaleźć w podręczniku \fBbsearch\fP(3). .PP Kolejnym przykładem jest następujący program, sortujący łańcuchy znaków podane w argumentach linii poleceń: .PP .\" SRC BEGIN (qsort.c) .EX #include #include #include \& static int cmpstringp(const void *p1, const void *p2) { /* The actual arguments to this function are "pointers to pointers to char", but strcmp(3) arguments are "pointers to char", hence the following cast plus dereference. */ \& return strcmp(*(const char **) p1, *(const char **) p2); } \& int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr, "Usage: %s ...\en", 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); } .EE .\" SRC END .SH "ZOBACZ TAKŻE" \fBsort\fP(1), \fBalphasort\fP(3), \fBstrcmp\fP(3), \fBversionsort\fP(3) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys , Andrzej Krzysztofowicz , Robert Luberda i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .