bsearch(3) - wariua/manpages-ko GitHub Wiki

NAME

bsearch - ์ •๋ ฌ๋œ ๋ฐฐ์—ด ์ด์ง„ ํƒ์ƒ‰ํ•˜๊ธฐ

SYNOPSIS

#include <stdlib.h>

void *bsearch(const void *key, const void *base,
              size_t nmemb, size_t size,
              int (*compar)(const void *, const void *));

DESCRIPTION

bsearch() ํ•จ์ˆ˜๋Š” base๊ฐ€ ์ฒซ ํ•ญ๋ชฉ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” nmemb ๊ฐœ ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์—์„œ key๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด์™€ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ํƒ์ƒ‰ํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ๋ฅผ size๋กœ ์ง€์ •ํ•œ๋‹ค.

๋ฐฐ์—ด ๋‚ด์šฉ๋ฌผ์ด compar๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋น„๊ต ํ•จ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. compar ๋ฃจํ‹ด์—๋Š” ๋‘ ์ธ์ž๊ฐ€ ์žˆ์–ด์„œ ์ฐจ๋ก€๋กœ key ๊ฐ์ฒด์™€ ๋ฐฐ์—ด ํ•ญ๋ชฉ์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋ผ ์žˆ์œผ๋ฉฐ, key ๊ฐ์ฒด๊ฐ€ ๋ฐฐ์—ด ํ•ญ๋ชฉ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๊ฑฐ๋‚˜ ํด ๋•Œ ๊ฐ๊ฐ 0๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๊ฑฐ๋‚˜ ํฐ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

RETURN VALUE

bsearch() ํ•จ์ˆ˜๋Š” ์ผ์น˜ํ•˜๋Š” ๋ฐฐ์—ด ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ผ์น˜ ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ‚ค์— ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ ์–ด๋А ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€๋Š” ๋ช…์„ธ๋ผ ์žˆ์ง€ ์•Š๋‹ค.

ATTRIBUTES

์ด ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์€ attributes(7)๋ฅผ ๋ณด๋ผ.

์ธํ„ฐํŽ˜์ด์Šค ์†์„ฑ ๊ฐ’
bsearch() ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Safe

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

EXAMPLE

์•„๋ž˜ ์˜ˆ์—์„œ๋Š” ๋จผ์ € qsort(3)๋ฅผ ์จ์„œ ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๊ณ ์„œ bsearch()๋ฅผ ์จ์„œ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์–ป๋Š”๋‹ค.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct mi {
    int nr;
    char *name;
} 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" }
};

#define nr_of_months (sizeof(months)/sizeof(months[0]))

static int
compmi(const void *m1, const void *m2)
{
    struct mi *mi1 = (struct mi *) m1;
    struct mi *mi2 = (struct mi *) m2;
    return strcmp(mi1->name, mi2->name);
}

int
main(int argc, char **argv)
{
    int i;

    qsort(months, nr_of_months, sizeof(struct mi), compmi);
    for (i = 1; i < argc; i++) {
        struct mi key, *res;
        key.name = argv[i];
        res = bsearch(&key, months, nr_of_months,
                      sizeof(struct mi), compmi);
        if (ret == NULL)
            printf("'%s': unknown month\n", argv[i]);
        else
            printf("%s: month #%d\n", res->name, res->nr);
    }
    exit(EXIT_SUCCESS);
}

SEE ALSO

hsearch(3), lsearch(3), qsort(3), tsearch(3)


2017-09-15

โš ๏ธ **GitHub.com Fallback** โš ๏ธ