_lsearch_s
Bir değer için doğrusal arama gerçekleştirir. CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren sürümü_lsearch
.
Sözdizimi
void *_lsearch_s(
const void *key,
void *base,
unsigned int *num,
size_t size,
int (__cdecl *compare)(void *, const void *, const void *),
void * context
);
Parametreler
key
Aranacak nesne.
base
Aranacak dizi tabanının işaretçisi.
number
Öğe sayısı.
size
Her dizi öğesinin bayt cinsinden boyutu.
compare
Karşılaştırma yordamının işaretçisi. İkinci parametre, arama anahtarının işaretçisidir. Üçüncü parametre, anahtarla karşılaştırılacak bir dizi öğesinin işaretçisidir.
context
Karşılaştırma işlevinde erişilebilen bir nesnenin işaretçisi.
Dönüş değeri
bulunursa key
, _lsearch_s
dizinin öğesiyle base
eşleşen key
bir işaretçi döndürür. Bulunamazsa key
, _lsearch_s
dizinin sonunda yeni eklenen öğeye bir işaretçi döndürür.
İşleve geçersiz parametreler geçirilirse, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre 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
. Daha fazla bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Hata koşulları
key |
base |
compare |
number |
size |
errno |
---|---|---|---|---|---|
NULL |
herhangi bir | herhangi bir | herhangi bir | herhangi bir | EINVAL |
herhangi bir | NULL |
herhangi bir | != 0 | herhangi bir | EINVAL |
herhangi bir | herhangi bir | herhangi bir | herhangi bir | sıfır | EINVAL |
herhangi bir | herhangi bir | NULL |
an | herhangi bir | EINVAL |
Açıklamalar
işlevi, _lsearch_s
baytların her size
biri olan bir öğe dizisindeki number
değer key
için doğrusal bir arama gerçekleştirir. _lsearch_s
'nin aksinebsearch_s
, dizinin sıralanması gerekmez. Bulunamazsa key
, _lsearch_s
dizinin sonuna ekler ve değerini artırır number
.
compare
İşlev, iki dizi öğesini karşılaştıran ve ilişkilerini belirten bir değer döndüren, kullanıcı tarafından sağlanan bir yordama yönelik bir işaretçidir. İşlev ayrıca compare
işaretçiyi ilk bağımsız değişken olarak bağlama götürür. _lsearch_s
arama sırasında bir veya daha fazla kez çağırır compare
ve her çağrıdaki iki dizi öğesine işaretçiler geçirir. compare
öğeleri karşılaştırıp sıfır olmayan (öğelerin farklı olduğu anlamına gelir) veya 0 (öğelerin aynı olduğu anlamına gelir) döndürmelidir.
İşaretçi context
, aranan veri yapısı bir nesnenin parçasıysa ve işlevin compare
nesnenin üyelerine erişmesi gerekiyorsa yararlı olabilir. Örneğin, işlevdeki compare
kod void işaretçisini uygun nesne türüne dönüştürebilir ve bu nesnenin üyelerine erişebilir. İşaretçinin context
eklenmesi daha güvenli hale gelir _lsearch_s
çünkü verileri işlev için kullanılabilir hale getirmek için statik değişkenlerin kullanılmasıyla ilişkili yeniden giriş hatalarını önlemek için compare
ek bağlam kullanılabilir.
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 |
---|---|
_lsearch_s |
<search.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.