Bruteforce strstr() implementation
There are many fancy algorithms worth studying. This is just my naive, sub-optimal, bruteforce Friday evening implementation.
#include <stdio.h> #include <string.h> int strStr(char* haystack, char* needle) { // return value int pos = 0; // save the beginning of the needle char *nee = needle; // haystack offset int goBack = 0; // save these for performance int haylen = strlen(haystack); int neelen = strlen(needle); // edge cases if (haylen == 0 && neelen == 0) return 0; if (neelen == 0) return 0; // bruteforce while (*haystack) { while (*haystack++ == *needle++) { goBack++; if (*needle == '\0') return pos; } haystack -= goBack; goBack = 0; needle = nee; pos++; // performance boost if ( (haylen - pos) < neelen ) return -1; } return -1; }