Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 keydengan . 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. _lfindcompare 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 , NULLatau , 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