Описание функций C (Си) / C++ - bsearch

Описание функций C (Си) / C++ - bsearch


#include требуется только для объявления
функции

char *bsearch(key,base,num,width,compare);
char *key; ключ поиска
char *base; указатель на поисковую базу
данных
unsigned num,width; число и размер элементов
int (*compare)(); указатель на функцию сравнения

Описание.

Функция bsearch производит двоичный поиск в отсортированном
массиве из num элементов, размер каждого элемента равен width
байт. Base - указатель на начало массива, key - значение ключа
поиска.
Аргумент compare является указателем на процедуру, постав-
ляемую пользователем, которая сравнивает два элемента массива и
возвращает значение, определяющее их отношение. В течении поиска
функция bsearch может вызывать процедуру compare один или нес-
колько раз, передавая в каждом вызове указатели на два элемента
массива. Процедура должна сравнивать элементы, а затем возвращать
одно из следующих значений.


ЗНАЧЕНИЕ СМЫСЛ ЗНАЧЕНИЯ

меньше 0 element1 меньше, чем element2

0 element1 равен element2

больше 0 element1 больше, чем element2


Возвращаемое значение.

Функция bsearch возвращает указатель на первое вхождение
ключа key в массив, на который указывает base.
Если key не найден, функция возвращает NULL.
См. также lfind, lsearch, gsort.

Пример:

/* Функция bsearch производит двоичный поиск в отсортиро-
ванном массиве для элемента "key" и возвращает указатель на
структуру, в которой находится ключ key, или возвращает NULL, ес-
ли ключа нет. */

#include
#include
#include
int compare();

/* должна быть объявлена как функция */

main (argc, argv)
int argc;
char **argv;
{

char **result;
char *key = "PATH";

/* следующий оператор находит аргумент, начинающийся с
"PATH", в предположении, что аргументы лексикографически отсорти-
рованы */

result = (char **)bsearch((char *)&key,
(char *)argv, argc, sizeof(char *),
compare);
if (result)
printf ("%s foundn", *result);
else
printf("PATH not found!n");
}

int compare (arg1, arg2)
char **arg1, **arg2;

{

return(strncmp(*arg1, *arg2, strlen(*arg1)));
}.





Опубликовал admin
11 Мар, Вторник 2008г.



Программирование для чайников.