home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 344_02 / stristr.c < prev    next >
Text File  |  1989-10-28  |  1KB  |  59 lines

  1.  
  2. /*
  3.  *      HEADER:         ;
  4.  *      TITLE:          stristr() - substring search function;
  5.  *      DATE:           10/27/1989;
  6.  *      DESCRIPTION:    "strstr() that ignores case distinctions";
  7.  *      VERSION:        1.0;
  8.  *      FILENAME:       STRISTR.C;
  9.  *      SEE-ALSO:       PB.DOC;
  10.  *      AUTHORS:        Michael Kelly;
  11.  */
  12.  
  13.  
  14.  
  15. #include "stristr.h"
  16.  
  17.  
  18.  
  19. /*
  20.  *  strstr() that ignores case distinctions
  21.  */
  22. char *stristr(const char *string, const char *substr)
  23. {
  24.     char *str1, *str2, *sentinel;
  25.     size_t string_len, substr_len, n;
  26.     int dif;
  27.  
  28.  
  29.     if(! *substr)
  30.     return (char *) string;
  31.  
  32.     string_len = strlen(string);
  33.     substr_len = strlen(substr);
  34.  
  35.     if(substr_len > string_len)
  36.     return NULL;
  37.  
  38.     sentinel = (char *) &string[string_len - substr_len];
  39.  
  40.     do  {
  41.     str1 = (char *) string;
  42.     str2 = (char *) substr;
  43.     n = substr_len;
  44.  
  45.     while(n--)
  46.         if(dif = tolower(*str1++) - tolower(*str2++))
  47.         break;
  48.  
  49.     if(! dif)
  50.         return (char *) string;
  51.  
  52.     } while(++string <= sentinel);
  53.  
  54.     return NULL;
  55.  
  56. }
  57.  
  58.  
  59.