lfind
stdlib.h:インデックス への移動
ヘッダーファイル
stdlib.h
カテゴリ
メモリと文字列の操作ルーチン
プロトタイプ
void *lfind(const void *key, const void *base, size_t *num, size_t width, int (_USERENTRY *fcmp)(const void *, const void *));
説明
線形検索を実行します。
lfind は,連続的なレコードの配列から key の値を線形検索します。ユーザー定義の比較ルーチン fcmp を使用します。fcmp 関数では,_USERENTRY 呼び出し規約を使用する必要があります。
配列は,それぞれ width バイトのサイズの *num 個のレコードを持ち,base が指すメモリ位置で始まります。
戻り値
lfind は,検索キーに一致するテーブル内の最初のエントリのアドレスを返します。一致が見つからなかった場合,lfind は NULL を返します。比較ルーチンは,*elem1 == *elem2 の場合は 0 を返し,そうでない場合は 0 以外の値を返す必要があります(elem1 と elem2 は比較ルーチンの 2 つのパラメータ)。
例
#include <stdio.h>
#include <stdlib.h>
int compare(int *x, int *y)
{
return( *x - *y );
}
int main(void)
{
int array[5] = {35, 87, 46, 99, 12};
size_t nelem = 5;
int key;
int *result;
key = 99;
result = (int *) lfind(&key, array, &nelem,
sizeof(int), (int(*)(const void *,const void *))compare);
if (result)
printf("Number %d found\n",key);
else
printf("Number %d not found\n",key);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |