LSEARCH(3)

名称
lsearch, lfind - 線形探索ルーチン

書式
#include <sys/types.h> char * lsearch(const void *key, const void *base, size_t *nelp, size_t width, int (*compar)(void *, void *)) char * lfind(const void *key, const void *base, size_t *nelp, size_t width, int (*compar)(void *, void *))

解説
このインタフェースは、これが書かれるより前に時代遅れでした。 これは互換ライブラリ libcompat から利用可能となっています。

関数 lsearch() 及び lfind() は基本的な線形探索機能を提供します。

base は配列の先頭を指すポインタです。 引数 nelp は配列の現在の要素数であり、 各要素サイズのバイト長は width です。 関数 compar は、2 つの要素比較に使用される比較ルーチンです。 この関数は、2 つの引数、 比較対象を指すポインタ key と配列メンバーを指すポインタを、 この順序でとります。 そして、 key が指す比較対象が配列のメンバより、小さい、等しい、大きいと 考えられるそれぞれの場合について、 負、 0 、正の整数を返さなければなりません。

関数 lsearch() 及び lfind() は、 base によって参照される配列の中で key が位置するポインタを返します。 もし key が存在しない場合、 lfind() はヌルポインタを返し、 lsearch() はそれを配列に追加します。 lsearch() 要素が配列に追加されると、 により配列要素が追加されると、引数 nelp によって参照される位置が 1 つ加算されます。

関連項目
bsearch(3), db(3)