Bagikan melalui


_lsearch_s

Melakukan pencarian linier untuk nilai. Versi _lsearch dengan peningkatan keamanan seperti yang dijelaskan dalam Fitur keamanan di CRT.

Sintaks

void *_lsearch_s(
   const void *key,
   void *base,
   unsigned int *num,
   size_t size,
   int (__cdecl *compare)(void *, const void *, const void *),
   void * context
);

Parameter

key
Objek yang akan dicari.

base
Penunjuk ke dasar array yang akan dicari.

number
Jumlah elemen.

size
Ukuran setiap elemen array dalam byte.

compare
Arahkan ke rutinitas perbandingan. Parameter kedua adalah penunjuk ke kunci untuk pencarian. Parameter ketiga adalah penunjuk ke elemen array yang akan dibandingkan dengan kunci.

context
Penunjuk ke objek yang mungkin diakses dalam fungsi perbandingan.

Nilai hasil

Jika key ditemukan, _lsearch_s mengembalikan penunjuk ke elemen array yang base cocok keydengan . Jika key tidak ditemukan, _lsearch_s mengembalikan penunjuk ke item yang baru ditambahkan di akhir array.

Jika parameter yang tidak valid diteruskan ke fungsi, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, maka errno diatur ke EINVAL dan fungsi mengembalikan NULL. Untuk informasi selengkapnya, lihat errno, _doserrno, _sys_errlist, dan _sys_nerr.

Kondisi kesalahan

key base compare number size errno
NULL any any any any EINVAL
any NULL any != 0 any EINVAL
any any any any zero EINVAL
any any NULL an any EINVAL

Keterangan

Fungsi ini _lsearch_s melakukan pencarian linier untuk nilai key dalam array number elemen, masing-masing size byte. Tidak seperti bsearch_s, _lsearch_s tidak mengharuskan array diurutkan. Jika key tidak ditemukan, maka _lsearch_s tambahkan ke akhir array dan kenaikan number.

Fungsi ini compare adalah penunjuk ke rutinitas yang disediakan pengguna yang membandingkan dua elemen array dan mengembalikan nilai yang menentukan hubungan mereka. Fungsi ini compare juga membawa penunjuk ke konteks sebagai argumen pertama. _lsearch_scompare memanggil satu atau beberapa kali selama pencarian, meneruskan pointer ke dua elemen array pada setiap panggilan. compare harus membandingkan elemen dan kemudian mengembalikan nonzero (artinya elemennya berbeda) atau 0 (artinya elemennya identik).

Penunjuk context dapat berguna jika struktur data yang dicari adalah bagian dari objek dan compare fungsi perlu mengakses anggota objek. Misalnya, kode dalam compare fungsi dapat mentransmisikan penunjuk ke dalam jenis objek yang sesuai dan mengakses anggota objek tersebut. Penambahan context pointer membuat _lsearch_s lebih aman karena konteks tambahan dapat digunakan untuk menghindari bug reentransi yang terkait dengan penggunaan variabel statis untuk membuat data tersedia untuk compare fungsi.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
_lsearch_s <search.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Lihat juga

Mencari dan mengurutkan
bsearch_s
_lfind_s
_lsearch