Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       qsort, qsort_r - сортировка массива

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <stdlib.h>

       void qsort(void base[.size * .nmemb], size_t nmemb, size_t size,
                  int (*compar)(const void [.size], const void [.size]));
       void qsort_r(void base[.size * .nmemb], size_t nmemb, size_t size,
                  int (*compar)(const void [.size], const void [.size], void *),
                  void *arg);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       qsort_r():
           _GNU_SOURCE

ОПИСАНИЕ

       Функция qsort() сортирует массив из nmemb размером size. Аргумент base указывает на начало массива.

       Содержимое  массива  сортируется  в  соответствии  с  функцией  сравнения,  на  которую ссылается compar,
       вызываемой вместе с двумя аргументами, которые ссылаются на сравниваемые объекты.

       Функция сравнения должна вернуть целое, меньшее, равное и большее нуля для случаев, когда первый аргумент
       меньше, равен или больше второго соответственно. Если оба элемента сравнения равны, порядок их сортировки
       в массиве не будет определен.

       Функция qsort_r() идентична qsort(), за исключением того, что в функцию сравнения compar добавлен  третий
       аргумент.  Указатель  передаётся в функцию сравнения через аргумент arg. Таким образом, функции сравнения
       не требуется глобальные переменные для передачи произвольных аргументов, и поэтому она  реентерабельна  и
       её можно безопасно использовать в нитях.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       Функции qsort() и qsort_r() ничего не возвращают.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ qsort(), qsort_r()                                                  │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       qsort()
              C11, POSIX.1-2008.

ИСТОРИЯ

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

       qsort_r()
              glibc 2.8.

ПРИМЕЧАНИЯ

       Для сравнения C-строк в качестве функции сравнения можно использовать strcmp(3), как это указано ниже.

ПРИМЕРЫ

       Для примера использования смотрите пример, указанный в bsearch(3).

       Еще один пример программы, сортирующей строки, переданные в качестве аргументов через командную строку:

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

       static int
       cmpstringp(const void *p1, const void *p2)
       {
           /* The actual arguments to this function are "pointers to
              pointers to char", but strcmp(3) arguments are "pointers
              to char", hence the following cast plus dereference. */

           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 (size_t j = 1; j < argc; j++)
               puts(argv[j]);
           exit(EXIT_SUCCESS);
       }

СМОТРИТЕ ТАКЖЕ

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

ПЕРЕВОД

       Русский  перевод  этой  страницы руководства разработал(и) Artyom Kunyov <artkun@guitarplayer.ru>, Azamat
       Hackimov  <azamat.hackimov@gmail.com>,   Konstantin   Shvaykovskiy   <kot.shv@gmail.com>,   Yuri   Kozlov
       <yuray@komyakino.ru> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                  15 июня 2024 г.                                        qsort(3)