Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Microsoft C 6.0 - <b>lsearch() perform linear search</b> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 lsearch()               Perform Linear Search

 #include   <search.h>

 char       *lsearch(key,base,num,width,compare);
 char       *key;                        Search key
 char       *base;                       Pointer to base of search data
 unsigned   *num, width;                 Number and width of elements
 int        (*compare)(e1,e2);           Pointer to compare function
 const void *e1, *e2;     Elements in compare function

    lsearch() performs a linear search of a table of information.
    (Compare this with bsearch(), which performs a binary search.)  'key'
    is the item being sought.  'base' is a pointer to the base of an
    array of 'num' elements, each of 'width' bytes.  'compare' points to
    a routine supplied by the user; it returns one of the following
    values after comparing two elements:

                   0           'element1' is identical to 'element2'

               not 0           'element1' and 'element2' are different

    Returns:    A pointer to the first occurrence of 'key' in the array
                pointed to by 'base'.  NULL is returned if 'key' is not
                found, and lsearch() adds it to the end of the array.
                (Compare with lfind(), which operates similarly to
                lsearch() but does not add key to the end of the array.)

      Notes:    During the search, lsearch() makes repeated calls to the
                'compare'.  On each call to 'compare', 'key' is compared
                with one of the elements of 'base'.

                lsearch() does not require the array to be sorted (as
                bsearch() does).

 Portability:   Not supported by ANSI standard.

   -------------------------------- Example ---------------------------------

    The following statements search an array for a value.  If the value
    is not found, it is added to the end of the array.

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

           int vals[] = {10,95,30,75,54,15,28,88,100};
           int num = 10;
           int key = 62;
           int *found;
           int cmp();

           main()
           {
               found = (int *)lsearch(&key,vals,&num,sizeof(int),cmp);
               if (found == 0)
                  printf("%d already in table\n",key);
               else
                   printf("%d added to table",key);
           }

           int cmp(n1,n2)
           int *n1;
           int *n2;
           {
               return(*n1 - *n2);
           }


See Also: bsearch() lfind() qsort()

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson