Main index | Section 3 | 日本語 | Options |
#include <stdlib.h>
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, respectively, to be less than, to match, or be greater than the array member. See the int_compare sample function in qsort(3) for a comparison function that is also compatible with bsearch().
#include <assert.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h>struct person { const char *name; int age; };
static int compare(const void *a, const void *b) { const int *age; const struct person *person;
age = a; person = b;
return (*age - person->age); }
int main(void) { struct person *friend; int age; /* Sorted array */ const struct person friends[] = { { "paul", 22 }, { "anne", 25 }, { "fred", 25 }, { "mary", 27 }, { "mark", 35 }, { "bill", 50 } }; const size_t len = sizeof(friends) / sizeof(friends[0]);
age = 22; friend = bsearch(&age, friends, len, sizeof(friends[0]), compare); assert(strcmp(friend->name, "paul") == 0); printf("name: %s\nage: %d\n", friend->name, friend->age);
age = 25; friend = bsearch(&age, friends, len, sizeof(friends[0]), compare);
/* * For multiple elements with the same key, it is implementation * defined which will be returned */ assert(strcmp(friend->name, "fred") == 0 || strcmp(friend->name, "anne") == 0); printf("name: %s\nage: %d\n", friend->name, friend->age);
age = 30; friend = bsearch(&age, friends, len, sizeof(friends[0]), compare); assert(friend == NULL); printf("friend aged 30 not found\n"); }
BSEARCH (3) | July 17, 2019 |
Main index | Section 3 | 日本語 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.