_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 key
bir işaretçi döndürür. Anahtar bulunamazsa döndürür _lfind
NULL
.
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. , compare
veya number
ise NULL
veya ise NULL
base
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