Bagikan melalui


_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 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

Baca juga

Mencari dan mengurutkan
_lfind_s
bsearch
_lsearch
qsort