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

  man pages->IRIX man pages -> Tcl/lsearch (3)              


lsearch(3Tcl)							 lsearch(3Tcl)

NAME    [Toc]    [Back]

     lsearch - See if a	list contains a	particular element

SYNOPSIS    [Toc]    [Back]

     lsearch ?mode? list pattern

DESCRIPTION    [Toc]    [Back]

     This command searches the elements	of list	to see if one of them matches
     pattern.  If so, the command returns the index of the first matching
     element.  If not, the command returns -1.	The mode argument indicates   |
     how the elements of the list are to be matched against pattern and	it    |
     must have one of the following values:

	  The list element must	contain	exactly	the same string	as pattern.   |

	  Pattern is a glob-style pattern which	is matched against each	list  |
	  element using	the same rules as the string match command.

	  Pattern is treated as	a regular expression and matched against each |
	  list element using the same rules as the regexp command.	      |

     If	mode is	omitted	then it	defaults to -glob.

KEYWORDS    [Toc]    [Back]

     list, match, pattern, regular expression, search, string

									Page 1

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
glcgetlistc IRIX return element from list
lindex IRIX Retrieve an element from a list
glcgetlisti IRIX return element from list
tt_session_propname HP-UX returns an element of the list of property names for a session
iflListItem IRIX an element of an doubly linked list (iflList or iflMultiList)
tt_spec_propname HP-UX return an element of the property name list for an object spec
XmRegisterSegmentEncoding HP-UX A compound string function that registers a compound text encoding format for a specified font list element ta
XmRegisterSegmentEncoding IRIX A compound string function that registers a compound text encoding format for a specified font list element ta
basename IRIX return the last element of a pathname
lbsingsel IRIX Allow only one selected element in listbox(es)
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service