_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
비교 루틴에 대한 포인터입니다. 첫 번째 매개 변수는 검색할 키에 대한 포인터입니다. 두 번째 매개 변수는 키와 비교할 배열 요소에 대한 포인터입니다.
반환 값
키가 있으면 _lfind
는 key
와 일치하는 base
에서 배열의 요소에 대한 포인터를 반환합니다. 키를 찾을 수 없으면 .를 _lfind
반환합니다 NULL
.
설명
_lfind
함수는 각각 width
바이트인 number
요소의 배열에서 key
값에 대해 선형 검색을 수행합니다. 와 달리 bsearch
배열 _lfind
을 정렬할 필요가 없습니다. base
인수는 검색할 배열의 밑에 대한 포인터입니다. compare
인수는 두 배열 요소를 비교하여 해당 관계를 지정하는 값을 반환하는 사용자가 제공한 루틴에 대한 포인터입니다. _lfind
는 검색 중에 compare
루틴을 한 번 이상 호출하며 각 호출에서 두 배열 요소에 대한 포인터를 전달합니다. compare
루틴은 요소를 비교한 다음 0이 아닌 값(요소가 다르다는 의미) 또는 0(요소가 동일하다는 의미)을 반환합니다.
이 함수는 해당 매개 변수의 유효성을 검사합니다. compare
key
0 number
NULL
이 아니면 0이 아닌 경우 base
NULL
number
또는 0보다 작은 경우 width
매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 errno
는 EINVAL
로 설정되고 함수에서 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