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)