Clarify how strcmp() should be used as the 'compar'

function by providing an example.
This commit is contained in:
Michael Kerrisk 2006-01-14 18:25:27 +00:00
parent ab95e95e01
commit 788be12467
1 changed files with 40 additions and 4 deletions

View File

@ -27,6 +27,7 @@
.\"
.\" Modified 1993-03-29, David Metcalfe
.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu)
.\" 2006-01-15, mtk, Added example program.
.\"
.TH QSORT 3 2003-11-15 "" "Linux Programmer's Manual"
.SH NAME
@ -61,14 +62,49 @@ SVID 3, POSIX, 4.3BSD, ISO 9899
Library routines suitable for use as the
.I compar
argument include
.BR strcmp (),
.BR strcmp ()
(see below),
.BR alphasort (),
and
.BR versionsort ().
.SH EXAMPLE
For an example of use, see the example on the
.BR bsearch (3)
page.
For one example of use, see the example under
.BR bsearch (3).
The following example program sorts the strings given
in its command-line arguments:
.sp
.nf
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
static int
cmpstringp(const void *p1, const void *p2)
{
/* The arguments to this function are "pointers to
pointers to char", but strcmp() arguments are "pointers
to char", hence the following cast plus dereference */
return strcmp(* (char **) p1, * (char **) p2);
}
int
main(int argc, char *argv[])
{
int j;
assert(argc > 1);
qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);
for (j = 1; j < argc; j++)
puts(argv[j]);
exit(EXIT_SUCCESS);
}
.fi
.SH "SEE ALSO"
.BR sort (1),
.BR alphasort (3),