_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返回指向该数组的元素中的 base 匹配 key。 如果找不到 key , _lsearch_s返回指向该新添加的项在数组的末尾。

如果传递的参数无效传递给函数,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,则 errno设置为 EINVAL ,函数返回 NULL。 有关更多信息,请参见 errno、_doserrno、_sys_errlist和_sys_nerr

错误状态

key

base

compare

num

size

errno

NULL

任何

任何

任何

任何

EINVAL

任何

NULL

任何

!= 0

任何

EINVAL

任何

任何

任何

任何

EINVAL

任何

任何

NULL

an

任何

EINVAL

备注

_lsearch_s 函数在数组 num 组件,每个执行线性搜索该值 keywidth 字节。 不同 bsearch_s, _lsearch_s 不需要数组进行排序。 如果找不到 key ,则 _lsearch_s 添加到数组的末尾并增加 num。

compare 功能是指向比较两个数组元素并返回指定它们之间的关系的值为用户提供的实例。 compare 功能也采用指向上下文作为第一个参数。 要在搜索时,_lsearch_s 调用 compare 一次或多次,通过指向在每个的两个数组元素调用。 compare 必定元素并返回非零 (表示元素完全不同的) 或 0 (表示组件的相同)。

context 指针非常有用,如果要搜索的数据结构是对象的一部分,而且 compare 功能需要对象的成员。 例如,在 compare 功能的代码可以转换无效指针到该对象的相应对象类型和访问成员。 ,因为附加的上下文来避免重新进入该 bug 与使用静态变量使数据可用于 compare 功能, context 指针的添加可 _lsearch_s 更加安全。

要求

实例

必需的头

_lsearch_s

search.h

有关更多兼容性信息,请参见中介绍的 兼容性

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

搜索和排序

bsearch_s

_lfind_s

_lsearch