|
NAMElsearch , lfind —
linear search and append
LIBRARYStandard C Library (libc, -lc)SYNOPSIS#include <search.h>
void *
void *
DESCRIPTIONThelsearch () and lfind ()
functions walk linearly through an array and compare each element with the one
to be sought using a supplied comparison function.
The key argument points to an element that
matches the one that is searched. The array's address in memory is denoted
by the base argument. The width of one element (i.e.,
the size as returned by If no matching element was found in the array,
RETURN VALUESThelsearch () and lfind ()
functions return a pointer to the first element found. If no element was
found, lsearch () returns a pointer to the newly added
element, whereas lfind () returns
NULL . Both functions return
NULL if an error occurs.
EXAMPLES#include <search.h> #include <stdio.h> #include <stdlib.h> static int element_compare(const void *p1, const void *p2) { int left = *(const int *)p1; int right = *(const int *)p2; return (left - right); } int main(int argc, char **argv) { const int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; size_t element_size = sizeof(array[0]); size_t array_size = sizeof(array) / element_size; int key; void *element; printf("Enter a number: "); if (scanf("%d", &key) != 1) { printf("Bad input\n"); return (EXIT_FAILURE); } element = lfind(&key, array, &array_size, element_size, element_compare); if (element != NULL) printf("Element found: %d\n", *(int *)element); else printf("Element not found\n"); return (EXIT_SUCCESS); } SEE ALSObsearch(3), hsearch(3), tsearch(3)STANDARDSThelsearch () and lfind ()
functions conform to IEEE Std 1003.1-2001
(“POSIX.1”).
HISTORYThelsearch () and lfind ()
functions appeared in 4.2BSD. In
FreeBSD 5.0, they reappeared conforming to
IEEE Std 1003.1-2001 (“POSIX.1”).
Visit the GSP FreeBSD Man Page Interface. |