focal (3) qsort_r.3.gz

Provided by: manpages-pl-dev_0.7-2_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ŁAD

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

       int
       main(int argc, char *argv[])
       {
           int j;

           if (argc < 2) {
               fprintf(stderr, "Użycie: %s <string>...\n", argv[0]);
               exit(EXIT_FAILURE);
           }

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

           for (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 4.07 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   man   są:   Przemek   Borys   (PTM)
       <pborys@dione.ids.pl>,    Andrzej    Krzysztofowicz    (PTM)    <ankry@mif.pg.gda.pl>,   Robert   Luberda
       <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

       Polskie tłumaczenie jest częścią  projektu  manpages-pl;  uwagi,  pomoc,  zgłaszanie  błędów  na  stronie
       http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją  4.07 oryginału.

                                                   2015-08-08                                           QSORT(3)