Функция Производит линейный поиск.
Синтаксис #include
void *lsearch(const void *key, void *base,
size_t num, size_t width,
int(*fcmp)(const void *, const void *));
Файл, содержащий stdlib.h
прототип
Описание lsearch производит просмотр таблицы. Т.к. это ли-
нейный поиск, то элементы таблицы не должны быть
отсортированы, перед вызовом функции lsearch. Ес-
ли элемент, на который указывает key, не найден в
таблице, то lsearch добавляет его к ней.
base - это указатель на базу (0-ой элемент) таб-
лицы.
num - указывает на целое значение, определяющее
число элементов в таблице.
key - указывает на искомый элемент.
wight- содержит размер элемента таблицы в байтах.
Аргумент fcmp указывает на программу сравнения
написанную пользователем. Она должна сравнивать
два элемента и возвращать результат сравнения.
При просмотре таблицы lsearch вызывает программу
сравнения, на которую указывает аргумент fcmp.
При каждом вызове программы сравнения lsearch по-
сылает ей два ппараметра: key - указатель на ис-
комый элемент, и elem - указатель на элемент в
таблице.
fcmp может интерпретировать полученные параметры
любым путем.
Возвращаемое lsearch возвращает адрес первого элемента в
значение таблице, совпадающего с искомым.
Если key совпадает с elem, то fcmp
возвращает 0, в противном случае fcmp
возвращает ненулевое зна- чение.
Переносимость lsearch доступна в системах UNIX.
Смотрите также bsearchlfind
Пример:
#include
#include
#include
/* инициализировать число цветов */
char *color[10] = {"Red","Blue","Green"};
int ncolors = 3;
int colorscmp(char **arg1, char **arg2)
{
return(strcmp(*arg1,*arg2));
}
int addelem(char *color)
{
int oldn = ncolors;
lsearch(&color, colors, (size_t*)&colors,
sizeof(char*), colorscmp);
return(ncolors = oldn);
}
int main(void)
{
int i;
char *key = "Purple";
if(addelem(key))
printf("%s уже в таблице", key);
else
printf("%s добавлен в таблицу цветов ",
"теперь в ней %d цветов",key,ncolors);
printf("Цвета:");
for(i=0; i