Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 _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. , compareveya number ise NULLveya 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