bsearch(3)

이름
bsearch - 정렬된 배열의 이진 탐색

라이브러리
표준 C 라이브러리 (libc, -lc)

요약
#include <stdlib.h>

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);

설명
The bsearch() function searches an array of n 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.

어레이의 내용은 compar와 관련된 비교 기능을 이용하여 상방정렬 되어야한다. compar 루틴은 key를 지정하는 것과 어레이의 구성을 지정하는 두개의 변수를 가진다. 그리고 이것은key오브젝트가 찾아지면 0보다 작거나 큰 정수를 반환해야 한다.

반환값
bsearch() 함수는 어레이에서 맞는 구성 요소를 잦아 그 포인터를 반환한다. 만약 맞는게 없다면 널을 반환한다. 키에 해당하는 구성요소가 여러 개 있다면, 반환되는 요소는 특별히 지정되지 않는다.

속성
이 섹션에서 사용되는 용어에 대한 설명은 attributes(7)을 참조하십시오.
상호 작용 | 속성 | 번호
bsearch() | Thread safety | MT-Safe

표준
C11, POSIX.1-2008.

이력
POSIX.1-2001, C89, 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 NITEMS(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, NITEMS(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, NITEMS(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 (https://www.gnu.org/licenses/gpl-3.0.html) 이상을 읽으십시오. 책임이 없습니다.

이 매뉴얼 페이지의 번역에서 오류를 발견하면 translation-team-ko@googlegroups.com 로 이메일을 보내주십시오.