_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, and _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 |
any |
EINVAL |
Заметки
Функция _lsearch_s выполняет линейный поиск значения key в массиве из num элементов шириной width. В отличие от bsearch_s, _lsearch_s не требует сортированный массив. Если key не найден, _lsearch_s добавляет его в конец массива и увеличивает num.
Функция compare является указателем на пользовательскую процедуру, которая сравнивает два элемента массива и возвращает значение, которое показывает, как соотносятся их значения. Функция compare также принимает указатель на контекст в качестве первого аргумента. _lsearch_s вызывает процедуру compare один или несколько раз во время поиска, передавая указатели на два элемента массива при каждом вызове: compare должна сравнивать элементы и возвращать или отличное от нуля значение (то есть элементы различаются), или 0 (если элементы совпадают).
Указатель context может быть полезен, если искомая структура данных является частью объекта и функции compare требуется доступ к членам объекта. Например, код в функции compare может привести указатель к соответствующему типу объекта и получить доступ к членам этого объекта. Добавление указателя context делает _lsearch_s более безопасной, поскольку наличие дополнительного контекста может использоваться для предотвращения ошибок повторного входа, связанных с использованием статических переменных, чтобы сделать данные доступными для функции compare.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_lsearch_s |
<search.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Для получения дополнительной информации см. Примеры вызовов неуправляемого кода.