VB icon

Case-insensitive strstr() work-alike

Email
Submitted on: 1/1/2015 9:56:00 AM
By: Bob Stout (republished under Open Content License) (from psc cd)  
Level: Beginner
User Rating: By 3 Users
Compatibility: C, C++ (general), Microsoft Visual C++, Borland C++, UNIX C++
Views: 2905
 
     StriStr--This function is an ANSI version of strstr() with case insensitivity.
 
code:
Can't Copy and Paste this?
Click here for a copy-and-paste friendly version of this code!
				
//**************************************
// Name: Case-insensitive strstr() work-alike
// Description:StriStr--This function is an ANSI version of strstr() with case insensitivity.
// By: Bob Stout (republished under Open Content License) (from psc cd)
//**************************************

/* +++Date last modified: 05-Jul-1997 */
/*
** Designation: StriStr
**
** Call syntax: char *stristr(char *String, char *Pattern)
**
** Description: This function is an ANSI version of strstr() with
**case insensitivity.
**
** Return item: char *pointer if Pattern is found in String, else
**pointer to 0
**
** Rev History: 07/04/95 Bob Stout ANSI-fy
**02/03/94 Fred Cole Original
**
** Hereby donated to public domain.
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "snip_str.h"
typedef unsigned int uint;
#if defined(__cplusplus) && __cplusplus
 extern "C" {
#endif
char *stristr(const char *String, const char *Pattern)
{
 char *pptr, *sptr, *start;
 uint slen, plen;
 for (start = (char *)String,
pptr = (char *)Pattern,
slen = strlen(String),
plen = strlen(Pattern);
/* while string length not shorter than pattern length */
slen >= plen;
start++, slen--)
 {
/* find start of pattern in string */
while (toupper(*start) != toupper(*Pattern))
{
 start++;
 slen--;
 /* if pattern longer than string */
 if (slen < plen)
return(NULL);
}
sptr = start;
pptr = (char *)Pattern;
while (toupper(*sptr) == toupper(*pptr))
{
 sptr++;
 pptr++;
 /* if end of pattern then pattern was found */
 if ('\0' == *pptr)
return (start);
}
 }
 return(NULL);
}
#if defined(__cplusplus) && __cplusplus
 }
#endif
#ifdef TEST
int main(void)
{
 char buffer[80] = "heLLo, HELLO, hello, hELLo, HellO";
 char *sptr = buffer;
 while (0 != (sptr = stristr(sptr, "hello")))
printf("Found %5.5s!\n", sptr++);
 return(0);
}
#endif /* TEST */


Other 4 submission(s) by this author

 


Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this code (in the Beginner category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)
 

Other User Comments


 There are no comments on this submission.
 

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular code, please click here instead.)
 

To post feedback, first please login.