lfind() Linear Search for Key
#include <search.h> Required for declarations only
char *lfind(key,base,num,width,compare);
char *key; Search key
char *base; Pointer to base of search data
unsigned *num, width; Number and width of elements
int (*compare)(); Pointer to compare function
lfind() performs a linear search of a table of information. (Compare
this to bsearch(), which performs a binary search.) The table is an
array of '*num' elements, each element being 'width' in size. 'base'
is a pointer to the base of the array to be searched, and 'key' is
the item being sought. 'compare' points to a user-supplied routine
that compares two elements and returns a value based on the
comparison. 'compare' returns one of the following values:
0 'element1' is identical to 'element2'
not 0 'element1' and 'element2' are different
Returns: A pointer to the first occurrence of 'key' in the array
pointed to by 'base'. NULL is returned if 'key' is not
found.
Notes: lfind() will make repeated calls to the 'compare' routine
during the search. On each call to 'compare', 'key' will
be compared with one of the elements of 'base'.
lfind() does not require the array to be sorted (as
bsearch() does).
lsearch() operates similarly to lfind(), but lsearch()
adds 'key' to the end of the list if it is not found;
lfind() does not.
-------------------------------- Example ---------------------------------
The following statements search an array for a value and print out an
appropriate message.
#include <search.h>
#include <stdio.h>
#include <string.h>
int vals[] = {10,95,30,75,54,62,15,28,88,100};
int num = 10;
int key = 62;
int *found;
int cmp();
main()
{
found = (int *)lfind(&key,vals,&num,sizeof(int),cmp);
if (found)
printf("%d already in table\n",key);
else
printf("%d not found\n",key);
}
int cmp(n1,n2)
int *n1;
int *n2;
{
return(*n1 - *n2);
}
Seealso:
This page last updated on Fri Nov 30 10:48:32 MSK 2001
Copyright © 1992-2001, Vitaly Filatov, Moscow, Russia
Webmaster