Everything

bsearch


バイナリ検索を行います。

[所属]

標準ライブラリ

[指定形式]

#include <stdlib.h>

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

[戻り値]

keyと一致する配列の要素へのポインタを返します。一致する要素が複数ある場合,結果はその中で最初に見つかった要素を指します。keyと一致する要素が見つからなかった場合,nullポインタを返します。

[詳細説明]

バイナリ検索法により,baseから始まる配列の中で,keyと一致する要素を検索します。nmembは,配列の要素数です。sizeは,各要素のサイズです。配列は,compar(最後の引数)が指す比較関数に関し昇順で整列するようにしてください。comparが指す比較関数は,2つの引数を持つように定義してください。結果は,1番目の引数が2番目の引数よりも小さい場合は負,2つの引数が一致する場合はゼロ,1番目の引数が2番目の引数よりも大きい場合は正の整数を返すようにしてください。

[使用例]

#include    <stdlib.h>
#include    <string.h>
int compar(const void *x, const void *y);
 
void func(void) {
    static  char    *base[] = {"a", "b", "c", "d", "e", "f"};
    char            *key = "c";     /*検索キーは“c”*/
    char            **ret;
                                    /*retに“c”へのポインタを格納*/
    ret = (char **) bsearch((char *) &key, (char *) base, 6, sizeof(char *), compar);
}
int compar(const void *x, const void *y {
    return(strcmp(x, y));           /*引数を比較して正,ゼロ,または負の整数を返す*/
}