bsearch(3) | Library Functions Manual | bsearch(3) |
bsearch - 정렬된 배열의 이진 탐색
표준 C 라이브러리 (libc, -lc)
#include <stdlib.h>
void *bsearch(const void key[.size], const void base[.size * .nmemb], size_t nmemb, size_t size, int (*compar)(const void [.size], const void [.size]));
bsearch() 함수는 nmemb 오브젝트의 어레이를 찾는다, 그것의 최초 구성은 key로 지정된 오브젝트에 해당하는 구성으로, base에 의해 지정된다. 각 어레이 구성의 크기는 size로 지정된다.
어레이의 내용은 compar와 관련된 비교 기능을 이용하여 상방정렬 되어야한다. compar 루틴은 key를 지정하는 것과 어레이의 구성을 지정하는 두개의 변수를 가진다. 그리고 이것은key오브젝트가 찾아지면 0보다 작거나 큰 정수를 반환해야 한다.
bsearch() 함수는 어레이에서 맞는 구성 요소를 잦아 그 포인터를 반환한다. 만약 맞는게 없다면 널을 반환한다. 키에 해당하는 구성요소가 여러 개 있다면, 반환되는 요소는 특별히 지정되지 않는다.
이 섹션에서 사용되는 용어에 대한 설명은 attributes(7)을 참조하십시오.
상호 작용 | 속성 | 번호 |
bsearch() | Thread safety | MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
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> #define ARRAY_SIZE(arr) (sizeof((arr)) / sizeof((arr)[0])) 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, ARRAY_SIZE(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, ARRAY_SIZE(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)
이 매뉴얼 페이지의 한국어 번역은 다음에 의해 편집되었습니다: ASPLINUX <man@asp-linux.co.kr>
이 번역은 무료 문서입니다. 저작권 조건에 대해서는 GNU General Public License 버전 3 이상을 읽으십시오. 책임이 없습니다.
이 매뉴얼 페이지의 번역에서 오류를 발견하면 translation-team-ko@googlegroups.com 로 이메일을 보내주십시오.
2023년 2월 5일 | Linux man-pages 6.03 |