다음을 통해 공유


_lsearch

값에 대한 선형 검색을 수행합니다. 찾을 수 없는 경우 목록의 끝에 추가합니다. 이 함수의 더 안전한 버전을 사용할 수 있습니다. 를 참조하세요 _lsearch_s.

구문

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

매개 변수

key
검색할 개체입니다.

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

number
요소의 수입니다.

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

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

반환 값

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

설명

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

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

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

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

요구 사항

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

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

예시

// crt_lsearch.c
#include <search.h>
#include <string.h>
#include <stdio.h>

int compare( const void *arg1, const void *arg2 );

int main(void)
{
   char * wordlist[4] = { "hello", "thanks", "bye" };
                            // leave room to grow...
   int n = 3;
   char **result;
   char *key = "extra";
   int i;

   printf( "wordlist before _lsearch:" );
   for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
   printf( "\n" );

   result = (char **)_lsearch( &key, wordlist,
                      &n, sizeof(char *), compare );

   printf( "wordlist after _lsearch:" );
   for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
   printf( "\n" );
}

int compare(const void *arg1, const void *arg2 )
{
   return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}
wordlist before _lsearch: hello thanks bye
wordlist after _lsearch: hello thanks bye extra

참고 항목

검색 및 정렬
bsearch
_lfind
_lsearch_s