_lfind_lfind

指定されたキーの線形探索を実行します。Performs a linear search for the specified key. この関数のセキュリティが強化されたバージョンについては、「_lfind_s」を参照してください。A more secure version of this function is available; see _lfind_s.

構文Syntax

void *_lfind(
   const void *key,
   const void *base,
   unsigned int *num,
   unsigned int width,
   int (__cdecl *compare)(const void *, const void *)
);

パラメーターParameters

keykey
検索するオブジェクト。Object to search for.

basebase
検索データのベースへのポインター。Pointer to the base of search data.

numbernumber
配列要素の数。Number of array elements.

widthwidth
配列要素の幅。Width of array elements.

comparecompare
比較ルーチンへのポインター。Pointer to comparison routine. 最初のパラメーターは、検索用のキーへのポインターです。The first parameter is a pointer to key for search. 2 番目の引数は、キーと比較する配列要素へのポインターです。The second parameter is a pointer to array element to be compared with key.

戻り値Return Value

キーが見つかった場合 _lfind配列の要素へのポインターを返します基本と一致するキーします。If the key is found, _lfind returns a pointer to the element of the array at base that matches key. キーが見つからない場合 _lfind返しますNULLします。If the key is not found, _lfind returns NULL.

RemarksRemarks

_Lfind関数は、値に関して線形探索を実行します。キーの配列のの各要素は、バイト。The _lfind function performs a linear search for the value key in an array of number elements, each of width bytes. 異なりbsearch_lfind配列を並べ替えるには必要ありません。Unlike bsearch, _lfind does not require the array to be sorted. 基本引数は、検索する配列のベースへのポインター。The base argument is a pointer to the base of the array to be searched. 比較引数が 2 つの配列要素を比較し、その関係を示す値を返します、ユーザー指定のルーチンへのポインター。The compare argument is a pointer to a user-supplied routine that compares two array elements and then returns a value specifying their relationship. _lfind呼び出し、比較ルーチンを 1 つまたは複数回呼び出しごとに 2 つの配列要素へのポインターを渡す、検索中にします。_lfind calls the compare routine one or more times during the search, passing pointers to two array elements on each call. 比較ルーチンが要素を比較し、し (つまり、要素が異なる) 0 以外の値を返す必要があります (つまり、要素が同じ場合) は 0。The compare routine must compare the elements and then return nonzero (meaning the elements are different) or 0 (meaning the elements are identical).

この関数は、パラメーターを検証します。This function validates its parameters. 場合比較キーまたはNULL、または基本NULL0 以外の場合、またはが小さい」の説明に従って、0 よりも、無効なパラメーター ハンドラーが呼び出さはパラメーターの検証です。If compare, key or number is NULL, or if base is NULL and number is nonzero, or if width is less than zero, the invalid parameter handler is invoked, as described in Parameter Validation. 続けるには、実行が許可された場合errnoに設定されているEINVAL 、関数を返しますNULLします。If execution is allowed to continue, errno is set to EINVAL and the function returns NULL.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_lfind_lfind <search.h><search.h>

互換性の詳細については、「 互換性」を参照してください。For more compatibility information, see Compatibility.

Example

// crt_lfind.c
// This program uses _lfind to search a string array
// for an occurrence of "hello".

#include <search.h>
#include <string.h>
#include <stdio.h>

int compare(const void *arg1, const void *arg2 )
{
   return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}

int main( )
{
   char *arr[] = {"Hi", "Hello", "Bye"};
   int n = sizeof(arr) / sizeof(char*);
   char **result;
   char *key = "hello";

   result = (char **)_lfind( &key, arr,
                      &n, sizeof(char *), compare );

   if( result )
      printf( "%s found\n", *result );
   else
      printf( "hello not found!\n" );
}
Hello found

関連項目See also

検索と並べ替えSearching and Sorting
_lfind_s_lfind_s
bsearchbsearch
_lsearch_lsearch
qsortqsort