lsearch(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

lsearch(3c)

Standard C Library Functions                                       lsearch(3C)



NAME
       lsearch, lfind - linear search and update

SYNOPSIS
       #include <search.h>

       void *lsearch(const void *key, void *base, size_t *nelp,
            size_t width, int (*compar)(const void *, const void *));


       void *lfind(const void *key, const void *base, size_t *nelp,
            size_t width, int (*compar)(const void *, const void *));

DESCRIPTION
       The  lsearch()  function  is  a  linear search routine generalized from
       Knuth (6.1) Algorithm S. (see The Art of Computer  Programming,  Volume
       3,  Section  6.1, by Donald E. Knuth.). It returns a pointer to a table
       indicating where a datum can be found. If the datum does not occur,  it
       is  added at the end of the table. The key argument points to the datum
       to be sought in the table. The base argument points to the  first  ele‐
       ment  in  the  table. The nelp argument 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. The width argument is the size of
       an element in bytes. The compar argument is a pointer to the comparison
       function  that  the  user  must  supply (strcmp(3C) 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.


       The lfind() function 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.


       It is important to note the following:

           o      The pointers to the key and the element at the base  of  the
                  table can be pointers to any type.


           o      The  comparison  function  need  not  compare every byte, so
                  arbitrary data can be contained in the elements in  addition
                  to the values being compared.


           o      The  value returned should be cast into type pointer-to-ele‐
                  ment.


RETURN VALUES
       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.

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


       The  lsearch() and lfind() functions safely allows concurrent access by
       multiple threads to disjoint data,  such  as  overlapping  subtrees  or
       tables.

EXAMPLES
       Example 1 A sample code using the lsearch() function.



       This program will read in less than TABSIZE strings of length less than
       ELSIZE and store them in a table, eliminating duplicates, and then will
       print each entry.


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

         #define TABSIZE 50
         #define ELSIZE 120

         main()
         {
             char line[ELSIZE];          /* buffer to hold input string */
             char tab[TABSIZE][ELSIZE];  /* table of strings */
             size_t nel = 0;             /* number of entries in tab */
             int i;

             while (fgets(line, ELSIZE, stdin) != NULL &&
                     nel < TABSIZE)
                     (void) lsearch(line, tab, &nel, ELSIZE, mycmp);
             for( i = 0; i < nel; i++ )
                     (void)fputs(tab[i], stdout);
             return 0;
         }


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe _  Stan‐
       dardSee standards(7).


SEE ALSO
       bsearch(3C), hsearch(3C), string(3C), tsearch(3C), attributes(7), stan‐
       dards(7)


       The Art of Computer Programming, Volume 3,  Sorting  and  Searching  by
       Donald E. Knuth, published by Addison-Wesley Publishing Company, 1973.



Oracle Solaris 11.4               17 Aug 2018                      lsearch(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3