C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス bsearch

🔧 標準ライブラリ ・ stdlib.h ・ C89

bsearch の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

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

どんな関数か

ソート済み配列に対して二分探索を行う汎用関数。qsortと同じ比較関数を使い、対象データを高速に探索する。配列が未ソートだと正しく動作しない前提付きの関数。 見つからない場合はNULLを返すため、戻り値のチェックを忘れると存在確認ロジックが正しく働かない。

使用例

#include <stdlib.h>
#include <stdio.h>
int cmp(const void *a, const void *b) {
    int x = *(const int *)a, y = *(const int *)b;
    return (x > y) - (x < y);
}
int main(void) {
    int arr[] = {1, 2, 3, 4, 5};
    int key = 3;
    int *found = bsearch(&key, arr, 5, sizeof(int), cmp);
    if (found) printf("found: %d\n", *found);
    return 0;
}

つまずきやすい注意点

⚠️ 配列が事前にソートされていないと結果は未定義。事前にqsortでソートしておく必要がある。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

bsearch と一緒に使う関数

qsort配列を汎用的にソートする関数。要素の型を問わず、比較関数を関数ポインタで渡すことで任意の基準で並べ替えられる。比較関数は…

同じ分類(標準ライブラリ)の関数

abort abs atexit atof atoi calloc div exit free getenv labs malloc qsort rand realloc srand

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る