- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.24.0-2
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 |
표준¶
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 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); }
추가 참조¶
번역¶
이 매뉴얼 페이지의 한국어 번역은 다음에 의해 편집되었습니다: ASPLINUX <man@asp-linux.co.kr>
이 번역은 무료 문서입니다. 저작권 조건에 대해서는 GNU General Public License 버전 3 이상을 읽으십시오. 책임이 없습니다.
이 매뉴얼 페이지의 번역에서 오류를 발견하면 translation-team-ko@googlegroups.com 로 이메일을 보내주십시오.
2024년 5월 2일 | Linux man-pages 6.8 |