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

개요

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

qsort_s(3c)

Standard C Library Functions                                         qsort(3C)



NAME
       qsort, qsort_r - quick sort
       qsort_s - quick sort with additional safety checks

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
       tables.

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);
             if (i < j)
                 return (-1);
             return (0);
         }

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

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

             for (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),    string(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.



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