Logo GBNhost.com — скидка на VPS сервера 50 процентов! Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

Ваш идеальный сервер от 4$/мес. Все включено:

- Администрирование и решение проблем 24/7
- Перенос проектов без рисков и простоев.
- Круглосуточный мониторинг доступности сайтов.
- Защита от DDoS атак.

Хостинг в Европе для новичков (от 25 руб/мес) и VIP-хостинг для профессионалов (от 1000 руб/мес)

Скидка 25% на все тарифы хостинга по промокоду STDCITF

Бесплатно: тест на 30 дней!

Сверхбыстрый хостинг от 69 р./мес., VPS от 299 р./мес.

Бесплатно: администрирование + ISPmanager + DDoS защита + SSL + 7 дней тестовый период

Скидка 50% на первый месяц VPS и хостинга по промокоду CITFORUM

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 описывается как имеющая тип "указатель на символ", возвращаемое ею значение следует преобразовывать к типу "указатель на элемент".

ПРИМЕР Приведем фрагмент программы, который считывает цепочки символов в количестве, меньшем TABSIZE, и длиной, меньшей ELSIZE, и помещает прочитанные цепочки в таблицу, исключая дубликаты.


	#include <stdio.h>

	#include <search.h>



	#define TABSIZE 50

	#define ELSIZE 120



	  char line [ELSIZE], tab [TABSIZE] [ELSIZE],

	       *lsearch ();

	  unsigned nel = 0;

	  int strcmp ();

	     ...

	  while (fdets (line, ELSIZE, stdin) != NULL &&

	         nel < TABSIZE)

	    (void) lsearch (line, (char*) tab, &nel,

	                       ELSIZE,strcmp);

	     ...

СМ. ТАКЖЕ
bsearch(3C), hsearch(3C), string(3C), tsearch(3C).

ДИАГНОСТИКА
Если искомый объект данных найден, то обе функции, lsearch и lfind, возвращают указатель на него. В противном случае функция lfind возвращает пустой указатель NULL, а функция lsearch возвращает указатель на новый, добавленный объект.

СЮРПРИЗЫ
Недостаток свободного пространства в таблице для добавления нового объекта данных может привести к непредсказуемым последствиям.

хостинг сайтов ГиперХост — хостинг сайтов который Вы искали.

Виртуальный хостинг, Аренда VPS серверов, рация доменных имен, SSL сертификаты

Новости мира IT:

Архив новостей

Последние комментарии:

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...