_lfind

 

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

Выполняет линейный поиск указанного ключа. Более безопасная версия этой функции доступен; в разделе _lfind_s.

void *_lfind(  
   const void *key,  
   const void *base,  
   unsigned int *num,  
   unsigned int width,  
   int (__cdecl *compare)(const void *, const void *)  
);  

Параметры

key
Искомый объект.

base
Указатель на базе данных поиска.

num
Число элементов массива.

width
Ширина элементов массива.

compare
Указатель на подпрограмму сравнения. Первый параметр является указателем ключ для поиска. Второй параметр является указатель на элемент массива, который будет сравниваться с ключом.

Если ключ найден, _lfind возвращает указатель на элемент массива в base , соответствующий key. Если ключ не найден, _lfind возвращает NULL.

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

Эта функция проверяет свои параметры. Если compare, key или numNULL, или, если base имеет значение NULL и *num имеет ненулевое значение, или если width меньше нуля, вызывается обработчик недопустимого параметра, как описано в разделе проверки параметров. Если выполнение может быть продолжено, параметр errno устанавливается в значение EINVAL , и функция возвращает значение NULL.

ПодпрограммаОбязательный заголовок
_lfind<search.h>

Дополнительные сведения о совместимости см. в статье Compatibility во введении.

// crt_lfind.c  
// This program uses _lfind to search a string array  
// for an occurrence of "hello".  
  
#include <search.h>  
#include <string.h>  
#include <stdio.h>  
  
int compare(const void *arg1, const void *arg2 )  
{  
   return( _stricmp( * (char**)arg1, * (char**)arg2 ) );  
}  
  
int main( )  
{  
   char *arr[] = {"Hi", "Hello", "Bye"};  
   int n = sizeof(arr) / sizeof(char*);  
   char **result;  
   char *key = "hello";  
  
   result = (char **)_lfind( &key, arr,   
                      &n, sizeof(char *), compare );  
  
   if( result )  
      printf( "%s found\n", *result );  
   else  
      printf( "hello not found!\n" );  
}  

System::Collections::ArrayList:: содержит

Сортировка и поиск
_lfind_s
bsearch
_lsearch
qsort

Показ: