bsearch(3) Library Functions Manual bsearch(3) bsearch - (libc -lc) #include void *bsearch(size_t n, size_t size; const void key[size], const void base[size * n], size_t n, size_t size, typeof(int (const void [size], const void [size])) *compar); bsearch() n base key. size. compar. compar key key . bsearch() NULL . . attributes(7). +------------+------------------------------------+--------------------+ || | | +------------+------------------------------------+--------------------+ |bsearch() | | MT-Safe | +------------+------------------------------------+--------------------+ C11, POSIX.1-2008. POSIX.1-2001 C89 C99 SVr4 4.3BSD. qsort(3) bsearch(). #include #include #include #include struct mi { int nr; const char *name; }; static struct mi 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" } }; static int compmi(const void *m1, const void *m2) { const struct mi *mi1 = m1; const struct mi *mi2 = m2; return strcmp(mi1->name, mi2->name); } int main(int argc, char *argv[]) { qsort(months, countof(months), sizeof(months[0]), compmi); for (size_t i = 1; i < argc; i++) { struct mi key; struct mi *res; key.name = argv[i]; res = bsearch(&key, months, countof(months), sizeof(months[0]), compmi); if (res == NULL) printf("'%s': unknown month\n", argv[i]); else printf("%s: month #%d\n", res->name, res->nr); } exit(EXIT_SUCCESS); } hsearch(3), lsearch(3), qsort(3), tsearch(3) 3 . . : . 6.18 10 2026 bsearch(3)