lfind

提供: RAD Studio
移動先: 案内検索

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++

+