_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
要搜尋的基底陣列的指標。num
項目數size
每個陣列項目大小(位元)。compare
要比較常式的指標。 第二個參數是指向搜尋的索引指標。 第三個參數是指向與索引鍵比較的陣列元素。context
在比較函式可能被存取之物件的指標。
傳回值
如果找到key,則 _lsearch_s 會傳回與 key相符的base陣列的項目的指標 。 如果找不到 key , _lsearch_s 將指標傳回新加入的項目在陣列結尾。
如果傳給函式無效的參數,無效參數處理常式將被叫用,如 參數驗證 所述。 如果允許繼續執行,會將 errno 設為 EINVAL,並傳回NULL 。 如需詳細資訊,請參閱 errno、_doserrno、_sys_errlist 和 _sys_nerr。
錯誤狀況
key |
base |
compare |
num |
size |
errno |
---|---|---|---|---|---|
NULL |
any |
any |
any |
any |
EINVAL |
any |
NULL |
any |
!= 0 |
any |
EINVAL |
any |
any |
any |
any |
零 |
EINVAL |
any |
any |
NULL |
一 |
any |
EINVAL |
備註
_lsearch_s 函式在陣列中的 num 項目用 key 執行線性搜尋,每 width 位元組。 不同於 bsearch_s, _lsearch_s 不需要先排序陣列。 如果找不到 key ,則 _lsearch_s 將它加入至陣列結尾並加入 num。
compare函式是指向比較兩個陣列元素和傳回指定其關聯性之值的使用者提供的常式。 compare 函式只接受指標到內容做為第一個引數。 在搜尋過程中,_lsearch_s 會呼叫 compare 常式一次或多次,並於每次呼叫傳遞兩個陣列元素的指標。 compare 必須比較項目且傳回非零 (表示項目是不同的) 或 0 (表示項目中相同)。
如果被搜尋的資料結構為物件的一部分,context 指標會很有用,而且 compare 函式需要存取物件的成員。 舉例來說,compare 函式的程式碼可以將 null 指標轉型為適當的物件型別,然後存取該物件的成員。 因為其他內容可以用來避免關於使用靜態變數讓 compare 函式可以存取資料的可重入錯誤 ,則 context 指標加入使 _lsearch_s 更安全。
需求
常式 |
必要的標頭 |
---|---|
_lsearch_s |
<search.h> |
如需詳細資訊,請參閱介紹中的 相容性 。
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。