Share via


_lsearch_s

執行值的線性搜尋。 版本 _lsearch 具有 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
);

參數

key
要搜尋的物件。

base
要搜尋之陣列的基底指標。

number
項目數。

size
每個陣列元素的大小 (以位元組為單位)。

compare
比較常式的指標。 第二個參數是搜尋索引鍵的指標。 第三個參數是要與索引鍵比較之陣列元素的指標。

context
可能在比較函式中存取之物件的指標。

傳回值

如果找到 key_lsearch_s 會傳回與 key 相符之 base 處之陣列元素的指標。 如果 key 找不到 , _lsearch_s 則會在陣列結尾傳回新加入專案的指標。

如果將不正確參數傳遞至函式,則會叫用不正確參數處理常式,如參數驗證 中所述 。 如果允許繼續執行,則 errno 會設定為 EINVAL,且此函式會傳回 NULL。 如需詳細資訊,請參閱errno, _doserrno, _sys_errlist_sys_nerr.

錯誤條件

key base compare number size errno
NULL 任意 任意 任意 任意 EINVAL
任意 NULL 任意 != 0 任意 EINVAL
任意 任意 任意 任意 EINVAL
任意 任意 NULL an 任意 EINVAL

備註

_lsearch_s 函式會在 number 個元素的陣列中執行線性搜尋,尋找 key 值,每個元素 size 個位元組。 不同于 bsearch_s_lsearch_s 不需要排序陣列。 如果 key 找不到 ,則將 _lsearch_s 它加入陣列結尾,並遞增 number

compare 函式是使用者所提供之常式的指標,該常式比較兩個陣列元素,然後傳回一個指定其關聯性的值。 compare 函式也會採用內容指標作為第一個引數。 _lsearch_s 在搜尋時會呼叫 compare 一或多次,每次呼叫會將指標傳遞至兩個陣列元素。 compare 必須比較元素,然後傳回非零 (表示元素不同) 或 0 (表示元素完全相同)。

context 指標適用於搜尋的資料結構是物件的一部分,且 compare 函式需要存取物件成員的情況。 例如,compare 函式中的程式碼可以將 void 指標轉換成適當的物件類型,並存取該物件的成員。 context新增指標會更加 _lsearch_s 安全,因為可以使用額外的內容來避免與使用靜態變數相關聯的重新進入錯誤,讓函式可以使用 compare 資料。

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

需求

常式 必要的標頭
_lsearch_s <search.h>

如需相容性詳細資訊,請參閱相容性

另請參閱

搜尋和排序
bsearch_s
_lfind_s
_lsearch