|
Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!
BSEARCH(3) Linux Programmer's Manual BSEARCH(3)
NAME
bsearch - binary search of a sorted array
SYNOPSIS
#include <stdlib.h>
void *bsearch(const void *key, const void *base, size_t nmemb,
size_t size, int (*compar)(const void *, const void *));
DESCRIPTION
The bsearch() function searches an array of nmemb objects, the initial
member of which is pointed to by base, for a member that matches the
object pointed to by key. The size of each member of the array is
specified by size.
The contents of the array should be in ascending sorted order according
to the comparison function referenced by compar. The compar routine is
expected to have two arguments which point to the key object and to an
array member, in that order, and should return an integer less than,
equal to, or greater than zero if the key object is found, respec-
tively, to be less than, to match, or be greater than the array member.
RETURN VALUE
The bsearch() function returns a pointer to a matching member of the
array, or NULL if no match is found. If there are multiple elements
that match the key, the element returned is unspecified.
EXAMPLE
The example below first sorts an array of structures using qsort(3),
then retrieves desired elements using bsearch().
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct mi {
int nr;
char *name;
} months[] = {
{ 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" },
{ 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" },
{ 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" }
};
#define nr_of_months (sizeof(months)/sizeof(months[0]))
static int compmi(const void *m1, const void *m2) {
struct mi *mi1 = (struct mi *) m1;
struct mi *mi2 = (struct mi *) m2;
return strcmp(mi1->name, mi2->name);
}
int main(int argc, char **argv) {
int i;
qsort(months, nr_of_months, sizeof(struct mi), compmi);
for (i = 1; i < argc; i++) {
struct mi key, *res;
key.name = argv[i];
res = bsearch(&key, months, nr_of_months,
sizeof(struct mi), compmi);
if (res == NULL)
printf("'%s': unknown month\n", argv[i]);
else
printf("%s: month #%d\n", res->name, res->nr);
}
return 0;
}
CONFORMING TO
SVr4, 4.3BSD, POSIX.1-2001, C99
SEE ALSO
hsearch(3), lsearch(3), qsort(3), tsearch(3)
2003-11-01 BSEARCH(3)
Man(1) output converted with
man2html and wrapped by fishsponge
This page was generated on Sat Sep 8 16:36:11 GMT 2007
|
Your favourite pages:
No pages logged yet. Trying to save cookie... Top 10 most popular pages:
svn man page (6140 hits) (FreeBSD 6.2)
sqlite3 man page (5592 hits) (openSUSE 10.2)
adv_cap_autoneg man page (5041 hits) (Solaris 10 11_06)
CPAN man page (4786 hits) (Suse Linux 10.1)
ssh man page (4438 hits) (Suse Linux 10.1)
ssh-socks5-proxy-connect man page (3506 hits) (Solaris 10 11_06)
signal man page (3363 hits) (Suse Linux 10.1)
netcat man page (3359 hits) (Suse Linux 10.1)
pprosetup man page (2874 hits) (Solaris 10 11_06)
startproc man page (2732 hits) (Suse Linux 10.1)
|