LSEARCH(3)

名前
lfind, lsearch - 配列をリニアサーチする。

書式
#include <stdlib.h>

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

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

説明
lfind() と lsearch() は、size バイトの要素 *nmemb 個からなる配列 base から、key をリニアサーチする。比較を行うのは compar が参照している関数で、 これは 2つの引き数を持ち、1つめの引き数が key を、 2つめの引き数は配列メンバーを指す。また compar は、 key が配列のメンバーとマッチしたなら 0、そのほかでは 0以外を返すことが期待されている。

lsearch() は、マッチする要素を見つけられなかったとき、 配列の最後に key をつけ加える。そして *nmemb を 1 ふやす。

返り値
lfind() の返り値は、配列のマッチしたメンバーへのポインタである。 もしマッチするメンバーが見つからないと NULL を返す。 lsearch() の返り値も、配列のマッチしたメンバーへのポインタである。 マッチするメンバーが見つからなかったときは、 新たにつけ加えたメンバーへのポインタを返す。

準拠
SVID 3, BSD 4.3, ISO 9899

関連項目
bsearch(3), hsearch(3), tsearch(3)