Aracılığıyla paylaş


_lfind

Belirtilen anahtar için doğrusal bir arama gerçekleştirir. Bu işlevin daha güvenli bir sürümü kullanılabilir; bkz _lfind_s. .

Sözdizimi

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

Parametreler

key
Aranacak nesne.

base
Arama verilerinin tabanına işaretçi.

number
Dizi öğelerinin sayısı.

width
Dizi öğelerinin genişliği.

compare
Karşılaştırma yordamı işaretçisi. İlk parametre, arama için bir anahtar işaretçisidir. İkinci parametre, anahtarla karşılaştırılacak dizi öğesinin işaretçisidir.

Dönüş değeri

Anahtar bulunursa, _lfind dizinin öğesiyle base eşleşen keybir işaretçi döndürür. Anahtar bulunamazsa döndürür _lfindNULL.

Açıklamalar

işlevi, _lfind baytların her width biri olan bir öğe dizisindeki number değer key için doğrusal bir arama gerçekleştirir. _lfind'nin aksinebsearch, dizinin sıralanması gerekmez. base Bağımsız değişken, aranacak dizinin tabanına işaret eden bir işaretçidir. compare Bağımsız değişken, iki dizi öğesini karşılaştıran ve ardından ilişkilerini belirten bir değer döndüren, kullanıcı tarafından sağlanan bir yordama yönelik bir işaretçidir. _lfind , her çağrıda compare iki dizi öğesine işaretçiler geçirerek, arama sırasında rutini bir veya daha fazla kez çağırır. Yordamın compare öğeleri karşılaştırması ve sıfır olmayan (öğelerin farklı olduğu anlamına gelir) veya 0 (öğelerin aynı olduğu anlamına gelir) döndürmesi gerekir.

Bu işlev parametrelerini doğrular. , compareveya number ise NULLveya ise NULLbase ve number sıfır değilse ya da sıfırdan küçüksewidth, parametre doğrulamasında açıklandığı gibi geçersiz parametre key işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, errno olarak ayarlanır EINVAL ve işlevi döndürür NULL.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

Yordam Gerekli başlık
_lfind <search.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// 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

Ayrıca bkz.

Arama ve sıralama
_lfind_s
bsearch
_lsearch
qsort