다음을 통해 공유


_lfind

지정된 키에 대해 선형 검색을 수행합니다. 이 함수의 더 안전한 버전을 사용할 수 있습니다. 를 참조하세요 _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
검색 데이터의 기준에 대한 포인터입니다.

number
배열 요소의 수입니다.

width
배열 요소의 너비입니다.

compare
비교 루틴에 대한 포인터입니다. 첫 번째 매개 변수는 검색할 키에 대한 포인터입니다. 두 번째 매개 변수는 키와 비교할 배열 요소에 대한 포인터입니다.

반환 값

키가 있으면 _lfindkey와 일치하는 base에서 배열의 요소에 대한 포인터를 반환합니다. 키를 찾을 수 없으면 .를 _lfind 반환합니다 NULL.

설명

_lfind 함수는 각각 width 바이트인 number 요소의 배열에서 key 값에 대해 선형 검색을 수행합니다. 와 달리 bsearch배열 _lfind 을 정렬할 필요가 없습니다. base 인수는 검색할 배열의 밑에 대한 포인터입니다. compare 인수는 두 배열 요소를 비교하여 해당 관계를 지정하는 값을 반환하는 사용자가 제공한 루틴에 대한 포인터입니다. _lfind는 검색 중에 compare 루틴을 한 번 이상 호출하며 각 호출에서 두 배열 요소에 대한 포인터를 전달합니다. compare 루틴은 요소를 비교한 다음 0이 아닌 값(요소가 다르다는 의미) 또는 0(요소가 동일하다는 의미)을 반환합니다.

이 함수는 해당 매개 변수의 유효성을 검사합니다. comparekey 0 number NULL이 아니면 0이 아닌 경우 base NULL number 또는 0보다 작은 경우 width 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 errnoEINVAL 로 설정되고 함수에서 NULL버전입니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
_lfind <search.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// 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" );
}
Hello found

참고 항목

검색 및 정렬
_lfind_s
bsearch
_lsearch
qsort