Aracılığıyla paylaş


_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 keybir 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_errlistve _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.

Ayrıca bkz.

Arama ve sıralama
bsearch_s
_lfind_s
_lsearch