_lfind
Melakukan pencarian linier untuk kunci yang ditentukan. Versi fungsi ini yang lebih aman tersedia; lihat _lfind_s
.
Sintaks
void *_lfind(
const void *key,
const void *base,
unsigned int *num,
unsigned int width,
int (__cdecl *compare)(const void *, const void *)
);
Parameter
key
Objek yang akan dicari.
base
Penunjuk ke dasar data pencarian.
number
Jumlah elemen array.
width
Lebar elemen array.
compare
Penunjuk ke rutinitas perbandingan. Parameter pertama adalah penunjuk ke kunci untuk pencarian. Parameter kedua adalah elemen pointer to array yang akan dibandingkan dengan kunci.
Nilai hasil
Jika kunci ditemukan, _lfind
mengembalikan penunjuk ke elemen array yang base
cocok key
dengan . Jika kunci tidak ditemukan, _lfind
mengembalikan NULL
.
Keterangan
Fungsi ini _lfind
melakukan pencarian linier untuk nilai key
dalam array number
elemen, masing-masing width
byte. Tidak seperti bsearch
, _lfind
tidak mengharuskan array diurutkan. Argumen base
adalah penunjuk ke dasar array yang akan dicari. Argumen compare
adalah penunjuk ke rutinitas yang disediakan pengguna yang membandingkan dua elemen array lalu mengembalikan nilai yang menentukan hubungan mereka. _lfind
compare
memanggil rutinitas satu atau beberapa kali selama pencarian, meneruskan penunjuk ke dua elemen array pada setiap panggilan. Rutinitas compare
harus membandingkan elemen dan kemudian mengembalikan nonzero (artinya elemennya berbeda) atau 0 (artinya elemennya identik).
Fungsi ini memvalidasi parameternya. Jika compare
, key
atau number
, NULL
atau , atau jika base
adalah NULL
dan number
bukan nol, atau jika width
kurang dari nol, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, errno
diatur ke EINVAL
dan fungsi mengembalikan NULL
.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_lfind |
<search.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk