qsort_s(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

qsort_s(3c)

qsort(3C)                Standard C Library Functions                qsort(3C)

NAME
       qsort, qsort_r, qsort_s - quick sort

SYNOPSIS
       #include <stdlib.h>

       void qsort(void *base, size_t nel, size_t width,
           int (*compar)(const void *x, const void *y));


       void qsort_r(void *base, size_t nel, size_t width,
           int (*compar)(const void *x, const void *y, void *context),
           void *context);


       #define __STDC_WANT_LIB_EXT1__ 1
       #include <stdlib.h>

       errno_t qsort_s(void *base, rsize_t nel, rsize_t width,
           int (*compar)(const void *x, const void *y, void *context),
           void *context);

DESCRIPTION
       The  qsort() function is an implementation of the quick-sort algorithm.
       It sorts a table of data in place. The contents of the table are sorted
       in ascending order according to the user-supplied comparison function.


       The base argument points to the element at the base of the  table.  The
       nel argument is the number of elements in the table. The width argument
       specifies the size of each element in bytes. The compar argument is the
       name  of  the  comparison  function, which is called with two arguments
       that point to the elements being compared.


       The function must return an integer less than,  equal  to,  or  greater
       than  zero  to  indicate if the first argument is to be considered less
       than, equal to, or greater than the second argument.


       The contents of the table are sorted in ascending  order  according  to
       the user supplied comparison function.


       The qsort_r() function performs the same operation as the qsort() func‐
       tion, differing in the addition of the context argument, which may hold
       a  user-defined  value.  This value is passed without interpretation to
       the comparison function, and can be used to  pass  information  between
       the caller and the comparison function.


       The  qsort_s()  function  is part of the C11 bounds checking interfaces
       specified in the C11 standard, Annex K. It is similar  to  the  qsort()
       function,  but  with  differing parameters and return type and explicit
       runtime-constraints as defined in the C11  standard.  See  runtime_con‐
       straint_handler(3C) and INCITS/ISO/IEC 9899:2011.

RETURN VALUES
       If no runtime-constraint violation is detected, qsort_s() returns zero,
       otherwise, it returns a non-zero value.

ERRORS
       The qsort(), qsort_r(), and qsort_s() functions will fail if:


       EINVAL    Null pointer is passed.


       ERANGE    size argument is not a valid value.



USAGE
       The  qsort()  and qsort_r() functions safely allow concurrent access by
       multiple threads to disjoint data, such as overlapping subtrees or  ta‐
       bles.

EXAMPLES
       Example 1 Program Sorts




       The following program sorts a simple array:


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

         static int
         intcompare(const void *p1, const void *p2)
         {
             int i = *((int *)p1);
             int j = *((int *)p2);

             if (i < j)
                 return (-1);
             return (i > j)
         }

         int
         main()
         {
             int a[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
             size_t nelems = sizeof (a) / sizeof (int);

             qsort(a, nelems, sizeof (int), intcompare);

             for (size_t i = 0; i < nelems; i++) {
                 (void) printf("%d ", a[i]);
             }

             (void) printf("\n");
             return (0);
         }



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface  StabilityCommitted  _  MT-LevelSee  below  _
       StandardSee standards(7).



       The qsort() and qsort_r() functions can be used safely in multithreaded
       applications.


       The  qsort_s() function cannot be used safely in a multithreaded appli‐
       cation due to the runtime constraint handler. For more information, see
       the runtime_constraint_handler(3C) man page.

SEE ALSO
       sort(1),   bsearch(3C),   bsearch_s(3C),    lsearch(3C),    strcmp(3C),
       strxfrm(3C),                attributes(7),                standards(7),
       runtime_constraint_handler(3C)

NOTES
       The comparison function need not compare every byte, so arbitrary  data
       may  be  contained in the elements in addition to the values being com‐
       pared.


       The relative order in the output of two items that compare as equal  is
       unpredictable.


       Historically, global variables have been used with the qsort() function
       to pass additional data from the caller to the comparison function. The
       qsort_r()  function  provides  a  reentrant  mechanism for sharing such
       data, avoiding the need for global data, and is preferred in such situ‐
       ations.

HISTORY
       The qsort_r() function was added in Oracle Solaris 11.4.12.


       The qsort_s() function was added in Oracle Solaris 11.4.0.


       The qsort() function has been included in all Sun and  Oracle  releases
       of Solaris.

Oracle Solaris 11.4               27 Oct 2025                        qsort(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3