Unix Man (Справочное руководство)


LSEARCH(3C)


LSEARCH(3C)

НАЗВАНИЕ


lsearch, lfind - последовательный поиск и обновление

СИНТАКСИС

#include <stdio.h>

#include <search.h>

char *lsearch ((char *) key, (char *) base, nelp, sizeof (*key), compar) unsigned *nelp; int (*compar) ( );

char *lfind ((char *) key, (char *) base, nelp, sizeof (*key), compar) unsigned *nelp; int (*compar) ( );

ОПИСАНИЕ


Функция lsearch предназначена для выполнения последовательного поиска в соответствии с алгоритмом, описанным в книге Д. Кнута: Искусство программирования для ЭВМ. Т. 3. Сортировка, поиск. - М.: Мир, 1978. Раздел 6.1, алгоритм S.

Функция lsearch возвращает указатель внутрь таблицы на искомые данные. Если данные не найдены, они добавляются в конец таблицы. Аргумент key указывает на объект данных, разыскиваемый в таблице (ключ поиска). Base указывает на первый элемент таблицы. Nelp - указатель на целое, содержащее текущее количество элементов в таблице. Это целое значение увеличивается на единицу, если в таблицу добавляются данные. Compar - функция сравнения, предоставляемая пользователем (например, функция strcmp). Функция сравнения вызывается с двумя аргументами - указателями на сравниваемые элементы. Она должна возвращать нулевое значение, если элементы равны, и значение, не равное нулю, в противном случае.

Функция lfind выполняет то же самое, что и функция lsearch, но не добавляет данные в таблицу при неудачном поиске, возвращая в этом случае пустой указатель NULL.

ПРИМЕЧАНИЯ


Указатели на ключ (key) и на первый элемент таблицы (base) должны иметь тип "указатель на элемент" и преобразовываться к типу "указатель на символ".

В сравнении, осуществляемом функцией compar, не обязательно должен участвовать каждый байт, поэтому элементы таблицы в дополнение к сравниваемым величинам могут содержать произвольные данные.

Хотя функция lsearch описывается как имеющая тип "указатель на символ", возвращаемое ею значение следует преобразовывать к типу "указатель на элемент".

ПРИМЕР




Начало  Назад  Вперед