다음을 통해 공유


_lsearch_s

값에 대한 선형 검색을 수행합니다. CRT_lsearch 보안 기능에 설명된 대로 향상된 보안 기능이 있는 버전입니다.

구문

void *_lsearch_s(
   const void *key,
   void *base,
   unsigned int *num,
   size_t size,
   int (__cdecl *compare)(void *, const void *, const void *),
   void * context
);

매개 변수

key
검색할 개체입니다.

base
검색할 배열의 기준에 대한 포인터입니다.

number
요소의 수입니다.

size
각 배열 요소의 크기(바이트)입니다.

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

context
비교 함수에서 액세스할 수 있는 개체에 대한 포인터입니다.

반환 값

key가 있으면 _lsearch_sbase에서 key와 일치하는 배열의 요소에 대한 포인터를 반환합니다. 찾을 _lsearch_s 수 없으면 key 배열 끝에 새로 추가된 항목에 대한 포인터를 반환합니다.

잘못된 매개 변수가 함수에 전달되면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 errnoEINVAL로 설정되고 함수는 NULL을 반환합니다. 자세한 내용은 다음을 참조하세요.errno, _doserrno, _sys_errlist_sys_nerr.

오류 조건

key base compare number size errno
NULL any any any any EINVAL
any NULL any != 0 any EINVAL
any any any any zero EINVAL
any any NULL an any EINVAL

설명

_lsearch_s 함수는 각각 size 바이트인 number 요소의 배열에서 key 값에 대해 선형 검색을 수행합니다. 와 달리 bsearch_s배열 _lsearch_s 을 정렬할 필요가 없습니다. 찾을 _lsearch_s 수 없으면 key 배열의 끝에 추가하고 증분합니다number.

compare 함수는 두 배열 요소를 비교하여 해당 관계를 지정하는 값을 반환하는 사용자가 제공한 루틴에 대한 포인터입니다. 또한 compare 함수는 컨텍스트에 대한 포인터를 첫 번째 인수로 사용합니다. _lsearch_s는 검색 중에 compare를 한 번 이상 호출하며 각 호출에서 두 배열 요소에 대한 포인터를 전달합니다. compare는 요소를 비교한 다음 0이 아닌 값(요소가 다르다는 의미) 또는 0(요소가 동일하다는 의미)을 반환합니다.

context 포인터는 검색된 데이터 구조가 개체의 일부이며 compare 함수가 개체의 멤버에 액세스해야 하는 경우에 유용할 수 있습니다. 예를 들어 compare 함수는 void 포인터를 적절한 개체 형식으로 캐스팅하고 해당 개체의 멤버에 액세스할 수 있습니다. 추가 컨텍스트를 context 사용하여 정적 변수를 사용하여 함수에 데이터를 사용할 compare 수 있도록 하는 것과 관련된 재진입 버그를 방지할 수 있으므로 포인터 _lsearch_s 를 추가하면 더 안전해집니다.

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

요구 사항

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

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

참고 항목

검색 및 정렬
bsearch_s
_lfind_s
_lsearch