kazmax - Linux で自宅サーバー

lsearch - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 準拠
  6. バグ
  7. 関連項目

名前

lfind, lsearch - 配列を線形検索する

書式

#include <search.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, 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 ()の返り値も、配列のマッチしたメンバーへのポインタである。 マッチするメンバーが見つからなかったときは、 新たにつけ加えたメンバーへのポインタを返す。

準拠

SVr4, 4.3BSD, POSIX.1-2001. libc には libc-4.6.27 以降で実装されている。

バグ

関数の名前の選び方がよくない。

関連項目