_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> |
如需相容性詳細資訊,請參閱相容性。