#include <ctype.h> #include <stddef.h> char *strcasestr(const char *s1, const char *s2) { const char *s = s1; const char *p = s2; do { if (!*p) return (char *) s1; if ((*p == *s) || (tolower(*p) == tolower(*s))) { ++p; ++s; } else { p = s2; if (!*s) return NULL; s = ++s1; } } while (1); return *p ? NULL : (char *) s1; }