lsearch

 Функция            Производит линейный поиск.

 Синтаксис   #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.

 Смотрите также     bsearch lfind

 Пример:

 #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