*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> lsearch (3c)              


LSEARCH(3C)							   LSEARCH(3C)

NAME    [Toc]    [Back]

     lsearch, lfind - linear search and	update

SYNOPSIS    [Toc]    [Back]

     #include <stdio.h>
     #include <search.h>

     void *lsearch ((const void	*)key, (void *)base,
		    size_t *nmemb, size_t size,
		    int	(*compar)(const	void *,	const void *));

     void *lfind ((const void *)key, (const void *)base,
		  size_t *nmemb, size_t	size,
		  int (*compar)(const void *, const void *));

DESCRIPTION    [Toc]    [Back]

     lsearch 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.  Nmemb	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.  Size is the size	of the key in bytes
     (sizeof (*key)).  Compar is the name of the comparison function which the
     user must supply (strcmp, for example).  It is called with	two arguments
     that point	to the elements	being compared.	 The function must return zero
     if	the elements are equal and non-zero otherwise.

     Lfind is the same as lsearch except that if the datum is not found, it is
     not added to the table. Instead, a	NULL pointer is	returned.

NOTES    [Toc]    [Back]

     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
     Although declared as type pointer-to-character, the value returned	should
     be	cast into type pointer-to-element.

EXAMPLE    [Toc]    [Back]

     This fragment will	read in	less than TABSIZE strings of length less than
     ELSIZE and	store them in a	table, eliminating duplicates.

	  #include <stdio.h>
	  #include <search.h>

	  #define TABSIZE 50
	  #define ELSIZE 120

	       char line[ELSIZE], tab[TABSIZE][ELSIZE],	*lsearch( );
	       unsigned	nel = 0;

									Page 1

LSEARCH(3C)							   LSEARCH(3C)

	      int strcmp( );
	       . . .
	       while (fgets(line, ELSIZE, stdin) != NULL &&
		  nel <	TABSIZE)
		    (void) lsearch(line, (char *)tab, &nel,
			   ELSIZE, strcmp);
	       . . .

SEE ALSO    [Toc]    [Back]

     bsearch(3C), hsearch(3C), string(3C), tsearch(3C).

DIAGNOSTICS    [Toc]    [Back]

     If	the searched for datum is found, both lsearch and lfind	return a
     pointer to	it.  Otherwise,	lfind returns NULL and lsearch returns a
     pointer to	the newly added	element.

BUGS    [Toc]    [Back]

     Undefined results can occur if there is not enough	room in	the table to
     add a new item.

									PPPPaaaaggggeeee 2222
[ Back ]
 Similar pages
Name OS Title
lfind Tru64 Perform a linear search and update
lsearch Tru64 Perform a linear search and update
lfind FreeBSD linear search and append
lsearch Linux linear search of an array.
lsearch FreeBSD linear search and append
lsync HP-UX update disk
sync HP-UX update disk
elf_update IRIX update an ELF descriptor
sync Tru64 Update all file systems
locate.updatedb FreeBSD update locate database
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service