Scroll to navigation

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