共用方式為


_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
    要搜尋的陣列的基底指標。

  • num
    項目數目。

  • width
    每個陣列元素的寬度。

  • compare
    指標比較常式。 第一個參數是變數的指標,搜尋的索引鍵。 第二個參數是要比較具有索引鍵陣列元素的指標。

傳回值

如果找到索引鍵, _lsearch的陣列元素中傳回的指標base符合key。 如果找不到機碼, _lsearch新加入的項目結尾的陣列中傳回的指標。

備註

_lsearch函式會執行線性搜尋值key的陣列中num項目,每個width個位元組。 不像bsearch, _lsearch並不需要排序陣列。 如果key找不到, _lsearch將它加入至結尾的陣列,然後增量num。

compare引數為使用者提供的常式,會比較兩個陣列項目,並傳回值,指定兩者的關聯性的指標。 _lsearch呼叫compare搜尋,傳遞至兩個陣列元素的指標,在每個呼叫期間日常的一或多次。 compare必須比較項目,並傳回非零值 (亦即不相同的項目) 或 0 (也就相同的項目)。

這個函式會驗證它的參數。 如果compare, key或num是NULL,或是否base為 NULL 和 *num不是零,或是否width小於零,無效的參數處理常式會叫用,如所述參數驗證。 如果要繼續,請允許執行errno設定為 [ EINVAL ,則函數會傳回NULL。

需求

常式

所需的標頭

_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 ) );
}
  

.NET Framework 對等用法

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

請參閱

參考

搜尋和排序

bsearch

_lfind

_lsearch_s