Provided by: manpages-pl-dev_4.13-4_all bug

NAZWA

       qsort, qsort_r  - sortuje tablicę

SKŁADNIA

       #include <stdlib.h>

       void qsort(void *base, size_t nmemb, size_t size,
                  int (*compar)(const void *, const void *));

       void qsort_r(void *base, size_t nmemb, size_t size,
                  int (*compar)(const void *, const void *, void *),
                  void *arg);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       qsort_r(): _GNU_SOURCE

OPIS

       Funkcja  qsort()  sortuje tablicę nmemb elementów o rozmiarze size. Argument base wskazuje
       na początek tablicy.

       Zawartość tablicy jest sortowana w  porządku  rosnącym,  zgodnie  z  funkcją  porównawczą,
       określoną  przez  wskaźnik  compar.  Funkcja  ta  jest  wołana  z dwoma argumentami, które
       wskazują na porównywane obiekty.

       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.

       Funkcja  qsort_r()  jest  taka  sama jak qsort(), z wyjątkiem tego, że funkcja porównująca
       compar przyjmuje trzeci argument. Wskaźnik podany w argumencie arg  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.

WARTOŚĆ ZWRACANA

       Funkcje qsort() i qsort_r() nic nie zwracają.

WERSJE

       qsort_r() zostało dodane w wersji 2.8 biblioteki glibc.

ATRYBUTY

       Informacje   o   pojęciach   używanych   w  tym  rozdziale  można  znaleźć  w  podręczniku
       attributes(7).

       ┌───────────────────┬────────────────────────┬─────────┐
       │InterfejsAtrybutWartość │
       ├───────────────────┼────────────────────────┼─────────┤
       │qsort(), qsort_r() │ Bezpieczeństwo wątkowe │ MT-Safe │
       └───────────────────┴────────────────────────┴─────────┘

ZGODNE Z

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

UWAGI

       Aby porównać łańcuch znaków w stylu C, funkcja porównująca może wywołać strcmp(3), tak jak
       to pokazano w przykładzie poniżej.

PRZYKŁADY

       Jeden przykład użycia można znaleźć w podręczniku bsearch(3).

       Kolejnym   przykładem  jest  następujący  program,  sortujący  łańcuchy  znaków  podane  w
       argumentach linii poleceń:

       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       static int
       cmpstringp(const void *p1, const void *p2)
       {
           /* Argumentami tej funkcji są "wskaźniki do wskaźników
              na znak", ale argumentami strcmp(3) są "wskaźniki na
              znak", dlatego potrzebne jest rzutowanie i dereferencja */

           return strcmp(*(const char **) p1, *(const char **) p2);
       }

       int
       main(int argc, char *argv[])
       {
           if (argc < 2) {
               fprintf(stderr, "Usage: %s <string>...\n", 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);
       }

ZOBACZ TAKŻE

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

O STRONIE

       Angielska wersja tej strony  pochodzi  z  wydania  5.10  projektu  Linux  man-pages.  Opis
       projektu,  informacje  dotyczące  zgłaszania  błędów oraz najnowszą wersję oryginału można
       znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

T◈UMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej  strony   podręcznika   są:   Przemek   Borys
       <pborys@dione.ids.pl>,  Andrzej  Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda
       <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe  informacje  o  warunkach  licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  lub  nowszej.  Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres listy dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.

                                       1 listopada 2020 r.                               QSORT(3)