SYNOPSIS
#include
char *strstr(const char *haystack, const char *needle);
DESCRIPTION
The
str function strstr finds the first occurence of
needle in
haystack.
Trailing nulls are not used.
Returns NULL, or the pointer to the trailing substring.
NOTES
I just love those parameter names. What operating system other than linux would let you find a
needle in a
haystack natively?
Seriously though, this is a very useful function. Great for finding things, of course, and the "trailing substring as return value" feature is really useful. Want to count all the occurences of a substring?
int findSubStr(const char *haystack, const char *needle) {
char * foo;
if(foo=strstr(haystack, needle)) {
return 1 + findSubStr(foo, needle); //Return 1
// we got a match
// plus all 1's returned
// from searches of remnants...
}
return 0; //Return 0 - no match.
}
This sucker will recursively count them, going down the list. Note that some early versions of linux bletch on null arguments, so this code needs a bit more error checking. An excellent exercise for the reader, don'tcha think?
NOTE ON TRAILING SUBSTRINGS: The "trailing substring" which strstr points to in its return value is actually cleverness. It does not allocate a new string - it simply returns a pointer pointing to the character immediately after the last character in the delimeter delim. This gives the effect of returning a pointer to some new string, but this is not the case. Be very careful about when you free things with this function!