Программирование на C и C++

Онлайн справочник программиста на C и C++

lfind, lsearch

void *lfind(const void *key, const void *base, size_t *num, size_t size, int (*compare)(const *void, const *void))

void *lsearch(const void *key, void *base, size_t *num, size_t size, int (*compare)(const *void, const *void))

Прототип: 
Описание: 

Эти функции не определены стандартом ANSI С.

Функции lfind() и lsearch() выполняют линейный поиск в массиве, на который указывает пара­метр base, и возвращают указатель на первый элемент, соответствующий ключу, на который ука­зывает параметр key. Число элементов в массиве определяется переменной, на которую указывает параметр num, а параметр size содержит размер каждого элемента в байтах.

Параметр compare указывает на функцию, сравнивающую элемент массива с ключом. Эта функ­ция имеет следующий формат:
int func_name(const void *arg1, const void *arg2)

Она должна возвращать следующие значения:
Если arg1 не равен arg2, то возвращается ненулевое значение.
Если arg1 равен arg2, то возвращается 0.

Массив, в котором осуществляется поиск, не обязательно должен быть отсортированным.

Если массив не содержит искомого элемента, то возвращается нулевой указатель.

Разница между функциями lfind() и lsearch() заключается в том, что функция lfind() выполняет только поиск. В противоположность этому, функция lsearch() добавляет элемент в конец массива, если он не содержался в этом массиве.

Пример: