lsearch(3C)lsearch(3C)NAMElsearch(), lfind() - linear search and update
is a linear search routine generalized from Knuth (6.1) Algorithm S.
It returns a pointer into a table indicating where a
datum may be found. If the datum does not occur, it is
added at the end of the table.
key Points to the datum to be sought in
base Points to the first element in the
nelp Points to an integer containing the
current number of elements in the
table. The integer is incremented
if the datum is added to the table.
compar Name of the comparison function
which the user must supply for exam‐
ple). It is called with two argu‐
ments that point to the elements
being compared. The function must
return zero if the elements are
equal and non-zero otherwise.
Same as except that if the datum is not found, it is not added
to the table. Instead, a NULL pointer is returned.
The pointers to the key and the element at the base of the table should
be of type pointer-to-element, and cast to type pointer-to-character.
The comparison function need not compare every byte, so arbitrary data
may be contained in the elements in addition to the values being com‐
Although declared as type pointer-to-character, the value returned
should be cast into type pointer-to-element.
This code fragment reads in ≤ strings of length ≤ and stores them in a
table, eliminating duplicates.
If the searched-for datum is found, both and return a pointer to it.
Otherwise, returns NULL and returns a pointer to the newly added ele‐
Undefined results can occur if there is not enough room in the table to
add a new item.
SEE ALSObsearch(3C), hsearch(3C), tsearch(3C), thread_safety(5).