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()
の返り値も、配列のマッチしたメンバーへのポインターである。
マッチするメンバーが見つからなかったときは、
新たにつけ加えたメンバーへのポインターを返す。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
lfind(), lsearch() |
Thread safety |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. libc には libc-4.6.27
以降で実装されている。
関数の名前の選び方がよくない。
bsearch(3),
hsearch(3),
tsearch(3)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。