値の線形探索を実行します。Performs a linear search for a value. CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンの _lsearch です。A version of _lsearch with security enhancements as described in Security Features in the CRT.


void *_lsearch_s(
   const void *key,
   void *base,
   unsigned int *num,
   size_t size,
   int (__cdecl *compare)(void *, const void *, const void *),
   void * context


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

検索する配列のベースへのポインター。Pointer to the base of array to be searched.

要素の数。Number of elements.

バイト単位での配列の各要素のサイズ。Size of each array element in bytes.

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

比較関数内でアクセスされることのあるオブジェクトへのポインター。A pointer to an object that might be accessed in the comparison function.

戻り値Return Value

場合キーが見つかると、 _lsearch_s配列の要素へのポインターを返します基本と一致するキーします。If key is found, _lsearch_s returns a pointer to the element of the array at base that matches key. 場合キーが見つからない _lsearch_s配列の末尾に新しく追加された項目へのポインターを返します。If key is not found, _lsearch_s returns a pointer to the newly added item at the end of the array.

この関数に無効なパラメーターが渡されると、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。If invalid parameters are passed to the function, the invalid parameter handler is invoked, as described in Parameter Validation. 続行し、実行が許可された場合errnoに設定されているEINVAL 、関数を返しますNULLします。If execution is allowed to continue, then errno is set to EINVAL and the function returns NULL. 詳細については、「errno、_doserrno、_sys_errlist、_sys_nerr」をご覧ください。For more information, see errno, _doserrno, _sys_errlist, and _sys_nerr.

エラー条件Error Conditions

keykey basebase comparecompare numbernumber sizesize errnoerrno
NULLNULL 任意any 任意any 任意any 任意any EINVALEINVAL
任意any NULLNULL 任意any != 0!= 0 任意any EINVALEINVAL
任意any 任意any 任意any 任意any ゼロzero EINVALEINVAL
任意any 任意any NULLNULL 1 つan 任意any EINVALEINVAL


_Lsearch_s関数は、値に関して線形探索を実行します。キーの配列のの各要素は、バイト。The _lsearch_s function performs a linear search for the value key in an array of number elements, each of width bytes. 異なりbsearch_s_lsearch_s配列を並べ替えるには必要ありません。Unlike bsearch_s, _lsearch_s does not require the array to be sorted. 場合キーが見つからない、 _lsearch_sインクリメント、配列の末尾に追加します。If key is not found, then _lsearch_s adds it to the end of the array and increments number.

比較関数は、2 つの配列要素を比較し、それらの関係を示す値を返します、ユーザー指定のルーチンへのポインター。The compare function is a pointer to a user-supplied routine that compares two array elements and returns a value specifying their relationship. 比較関数も、最初の引数としてコンテキストへのポインターを受け取ります。The compare function also takes the pointer to the context as the first argument. _lsearch_s呼び出し比較呼び出しごとに 2 つの配列要素へのポインターを渡す、検索中に 1 つ以上の時間。_lsearch_s calls compare one or more times during the search, passing pointers to two array elements on each call. 比較要素を比較し、いずれかを返す必要があります (つまり、要素が異なる) 0 以外の値または 0 (つまり、要素が同じ場合)。compare must compare the elements and then return either nonzero (meaning the elements are different) or 0 (meaning the elements are identical).

コンテキストポインターは検索対象のデータ構造体がオブジェクトの一部である場合に便利にできる、比較関数は、オブジェクトのメンバーにアクセスする必要があります。The context pointer can be useful if the searched data structure is part of an object and the compare function needs to access members of the object. コード例については、比較関数はそのオブジェクトの適切なオブジェクトの種類とアクセスのメンバーに void ポインターをキャストすることができます。For example, code in the compare function can cast the void pointer into the appropriate object type and access members of that object. 追加、コンテキストポインターにより _lsearch_s追加のコンテキストに関連付けられたデータを使用できるようにする静的変数を使用して、再入バグを回避するために使用できるためのより安全な比較関数。The addition of the context pointer makes _lsearch_s more secure because additional context can be used to avoid reentrancy bugs associated with using static variables to make data available to the compare function.


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

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

関連項目See also

検索と並べ替えSearching and Sorting