Provided by: manpages-pl-dev_0.6-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.

ZGODNE Z

       Funkcja qsort() jest zgodna z SVr4, 4.3BSD, C89, C99.

UWAGI

       Procedury biblioteczne odpowiednie do użycia jako argument compar funkcji qsort()  obejmują  alphasort(3)
       oraz  versionsort(3).  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 3.71 projektu Linux man-pages. Opis projektu, informacje
       dotyczące  zgłaszania   błędów,   oraz   najnowszą   wersję   oryginału   można   znaleźć   pod   adresem
       http://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>   i   Robert    Luberda
       <robert@debian.org>.

       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ą  3.71 oryginału.

                                                   2012-03-08                                           QSORT(3)