Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

lsearch

lsearch


Функция            Выполняет линейный поиск.

Синтаксис          #include<stdlib.h>
                   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<stdlib.h>
#include<stdio.h>
#include<string.h>

/* инициализировать число цветов */
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<ncolors; i++)
    printf("%s\n",colors[i]);
}

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог