lsearch() - 線形検索および更新

標準

標準/拡張機能 C/C++ 依存項目

XPG4
XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE
#include <search.h>

void *lsearch(const void *key, void *base, size_t *nelp, 
              size_t width,
              int (*compar)(const void *, const void *));

機能説明

lsearch() 関数は、線形検索ルーチンです。エントリーが見つかった場所を示すポインターをテーブルに戻します。エントリーが発生しない場合は、テーブルの最後に追加されます。key 引数は、テーブル内でシークされるエントリーを指します。base 引数は、テーブル内の最初のエレメントを指します。width 引数は、エレメントのバイト・サイズです。nelp 引数は、テーブル内の現行のエレメント数を含む整数を指します。nelp が指す整数は、エントリーがテーブルに追加されると、増加します。compar 引数は、ユーザーが提供すべき比較関数 (例えば、strcmp()) を指します。それは、比較されるエレメントが指す 2 つの引数で呼び出されます。関数は、2 つのエレメントが等しい場合は 0 を戻し、そうでない場合は、ゼロ以外の値を戻します。

C++ の特殊な動作: C と C++ リンケージ規約は非互換なので、lsearch() は C++ 関数ポインターを比較機構引数として受け取ることができません。C++ 関数ポインターを lsearch() へ渡そうとすると、コンパイラーは エラーとしてフラグを立てます。C または C++ 関数を外部「C」として宣言して、これを lsearch() に 渡すことができます。

戻り値

検索対象のエントリーが見つかった場合、lsearch() は、それへのポインターを戻します。

見つからない場合、lsearch() は、新たに追加されたエレメントへのポインターを新たに戻します。エラーの場合は、NULL ポインターが戻されます。

エラーは定義されません。

関連情報