Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Выполняет линейный поиск значения. Версия _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 возвращает указатель на элемент массива base, соответствующий key. Если key не найдено, _lsearch_s возвращает указатель на только что добавленный элемент в конце массива.
Если недопустимые параметры передаются функции, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если выполнение может быть продолжено, параметр errno устанавливается в значение EINVAL, и функция возвращает NULL. Дополнительные сведения см. в разделе errno, _doserrno, _sys_errlist, и _sys_nerr.
Условия ошибок
key |
base |
compare |
number |
size |
errno |
|---|---|---|---|---|---|
NULL |
любое | любое | любое | любое | EINVAL |
| любое | NULL |
любое | != 0 | любое | EINVAL |
| любое | любое | любое | любое | zero | EINVAL |
| любое | любое | NULL |
an | любое | EINVAL |
Замечания
Функция _lsearch_s выполняет линейный поиск значения key в массиве из number элементов шириной 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> |
Дополнительные сведения о совместимости см. в разделе Совместимость.