qsort(3) Library Functions Manual qsort(3) NAZWA qsort, qsort_r - sortuje tablice BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include void qsort(size_t n, size_t size; void base[n * size], size_t n, size_t size, typeof(int (const void [size], const void [size])) *compar); void qsort_r(size_t n, size_t size; void base[n * size], size_t n, size_t size, typeof(int (const void [size], const void [size], void *)) *compar, void *arg); Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)): qsort_r(): _GNU_SOURCE OPIS Funkcja qsort() sortuje tablice n elementow o rozmiarze size. Argument base wskazuje na poczatek tablicy. Zawartosc tablicy jest sortowana w porzadku rosnacym, zgodnie z funkcja porownawcza, okreslona przez wskaznik compar. Funkcja ta jest wolana z dwoma argumentami, ktore wskazuja na porownywane obiekty. Funkcja porownujaca musi zwracac liczbe calkowita, ktora jest mniejsza, rowna, lub wieksza od zera. Oznacza to wtedy, odpowiednio, ze pierwszy argument jest mniejszy, rowny, lub wiekszy od drugiego. Jesli oba porownywane elementy sa jednakowe, to ich kolejnosc w posortowanej tablicy jest nieokreslona. Funkcja qsort_r() jest taka sama jak qsort(), z wyjatkiem tego, ze funkcja porownujaca compar przyjmuje trzeci argument. Wskaznik podany w argumencie arg jest przekazywany do funkcji porownujacej. W ten sposob funkcja porownujaca nie potrzebuje zmiennych globalnych, by przekazywac sobie dowolne argumenty i dlatego jest bezpieczna do uzywana w aplikacji wielowatkowej. WARTOSC ZWRACANA Funkcje qsort() i qsort_r() nic nie zwracaja. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------------------+--------------------------+---------------+ |Interfejs | Atrybut | Wartosc | +---------------------------+--------------------------+---------------+ |qsort(), qsort_r() | Bezpieczenstwo watkowe | MT-bezpieczne | +---------------------------+--------------------------+---------------+ STANDARDY qsort() C11, POSIX.1-2008. HISTORIA qsort() POSIX.1-2001, C89, SVr4, 4.3BSD. qsort_r() glibc 2.8. UWAGI Aby porownac lancuch znakow w stylu C, funkcja porownujaca moze wywolac strcmp(3), tak jak to pokazano w przykladzie ponizej. PRZYKLADY Jeden przyklad uzycia mozna znalezc w podreczniku bsearch(3). Kolejnym przykladem jest nastepujacy program, sortujacy lancuchy znakow podane w argumentach linii polecen: #include #include #include static int cmpstringp(const void *p1, const void *p2) { /* Argumentami tej funkcji sa "wskazniki do wskaznikow na znak", ale argumentami strcmp(3) sa "wskazniki 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, "Uzycie: %s ...\n", 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); } ZOBACZ TAKZE sort(1), alphasort(3), strcmp(3), versionsort(3) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Przemek Borys , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.18 8 lutego 2026 r. qsort(3)