lsearch(3C)lsearch(3C)NAMElsearch(), lfind() - linear search and update
SYNOPSISDESCRIPTION
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
the table.
base Points to the first element in the
table.
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.
Notes
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‐
pared.
Although declared as type pointer-to-character, the value returned
should be cast into type pointer-to-element.
EXAMPLES
This code fragment reads in ≤ strings of length ≤ and stores them in a
table, eliminating duplicates.
...
...
RETURN VALUE
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‐
ment.
WARNINGS
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).
STANDARDS CONFORMANCElsearch(3C)