I finally got around to trying your version of the str_str()
and I must say it worked fine, but it wasn't case insensitive :-P
I fixed it by changing one line down there.
the 'if (*h == *n)' should be 'if (LOWER(*h) == LOWER(*n))'
A also changed the while { } loop to a for loop, but that depends on
taste. either way, it works fine. Of course, I could also
change it around to use Integers instead of char *'s
but again, that's a matter of taste.
Thanks d.
Code On
Akuma the Raging Coder
At 06:14 PM 1/15/98 -0500, you wrote:
>/*
> * I hacked the following, it may contain missing sanity
> * checking since I wrote it in vi instead of emacs
> */
>char *str_str (const char *haystack, const char *needle)
>{
> register const char *h, *n;
> const char *hm;
>
> if (!haystack || !needle)
> return NULL;
>
> n = needle;
> for (h = haystack; *h; h++) {
// Like so
if (LOWER(*h) == LOWER(*n)) {
// > if (*h == *n) {
> hm = h; /* set mark start of substring search */
>
> while (*h && *n) {
> if (LOWER(*h) != LOWER(*n)) /* substring does not match */
> break;
> h++; n++;
> }
> if (*n) { /* needle not terminated? start over */
> n = needle; /* reset needle */
> h = hm; /* reset haystack */
> } else /* needle found, return start of substring */
> return (char *) hm;
> }
> }
> return NULL; /* nothing found */
>}
>
>int main ()
>{
> char *p;
>
> p = str_str ("hello world", "world");
> printf ("%s\n", p ? p : "NULL");
>
> p = str_str ("ab", "a");
> printf ("%s\n", p ? p : "NULL");
>
> p = str_str ("hello", "ab");
> printf ("%s\n", p ? p : "NULL");
>
> p = str_str ("ab", "world");
> printf ("%s\n", p ? p : "NULL");
>
> p = str_str ("word world world-wonder", "world-wonder");
> printf ("%s\n", p ? p : "NULL");
>
> return 1;
>}
>
+------------------------------------------------------------+
| "The poets talk about love, but what I talk about is DOOM, |
| because in the end, DOOM is all that counts." - |
| Alex Machine/George Stark/Stephen King, The Dark Half |
| "Nothing is IMPOSSIBLE, Just IMPROBABLE" |
| "Easier Said Than Done, But Better Done Than Said..." |
+------------------------------------------------------------+
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST