Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
QSORT(3)		   Linux Programmer's Manual		      QSORT(3)

NAME
       qsort, qsort_r -	sort an	array

SYNOPSIS
       #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);

   Feature Test	Macro Requirements for glibc (see feature_test_macros(7)):

       qsort_r(): _GNU_SOURCE

DESCRIPTION
       The  qsort()  function sorts an array with nmemb	elements of size size.
       The base	argument points	to the start of	the array.

       The contents of the array are sorted in ascending order according to  a
       comparison  function pointed to by compar, which	is called with two ar-
       guments that point to the objects being compared.

       The comparison function must return an integer less than, equal to,  or
       greater	than  zero  if	the first argument is considered to be respec-
       tively less than, equal to, or greater than the second.	If two members
       compare as equal, their order in	the sorted array is undefined.

       The qsort_r() function is identical to qsort() except that the compari-
       son function compar takes a third argument.  A pointer is passed	to the
       comparison function via arg.  In	this way, the comparison function does
       not need	to use global variables	to pass	through	 arbitrary  arguments,
       and is therefore	reentrant and safe to use in threads.

RETURN VALUE
       The qsort() and qsort_r() functions return no value.

VERSIONS
       qsort_r() was added to glibc in version 2.8.

CONFORMING TO
       The qsort() function conforms to	SVr4, 4.3BSD, C89, C99.

NOTES
       Library routines	suitable for use as the	compar argument	to qsort() in-
       clude alphasort(3) and versionsort(3).  To compare C strings, the  com-
       parison function	can call strcmp(3), as shown in	the example below.

EXAMPLE
       For one example of use, see the example under bsearch(3).

       Another example is the following	program, which sorts the strings given
       in its command-line arguments:

       #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(* (char * const *) p1,	* (char	* const	*) p2);
       }

       int
       main(int	argc, char *argv[])
       {
	   int j;

	   if (argc < 2) {
	       fprintf(stderr, "Usage: %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);
       }

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

COLOPHON
       This page is part of release 3.74 of the	Linux  man-pages  project.   A
       description  of	the project, information about reporting bugs, and the
       latest	 version    of	  this	  page,	   can	   be	  found	    at
       http://www.kernel.org/doc/man-pages/.

				  2012-03-08			      QSORT(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | VERSIONS | CONFORMING TO | NOTES | EXAMPLE | SEE ALSO | COLOPHON

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=qsort&sektion=3&manpath=Debian+8.1.0>

home | help