strstr功能:在s1中查找整个s2第一次出现的起始位置,并返回一个指向该位置的指针,如果s2没有完整的出现在s1中,则返回NULL。
#include <stdio.h> #include <assert.h> char *my_strstr(char const *pdest, char const *psrc) { const char *pstr1 = pdest; const char *pstr2 = psrc; const char *ptr = NULL; assert(pdest);//断言字符串地址非零 assert(psrc); if (*pstr2 == '\0') { return (char *)pstr1; } while (*pstr1 != '\0') { ptr = pstr1; pstr2 = psrc; while (*ptr != '\0' && *pstr2 != '\0' && *ptr == *pstr2) { ptr++; pstr2++; } if (*pstr2 == '\0') { return (char *)pstr1;//将目的地址返回,以便可以链式访问 } pstr1++; } return NULL; } int main() { char *p1 = "abbbcdef"; char *p2 = "bcd"; if (my_strstr(p1,p2) != NULL) printf("%s\n", p1); system("pause"); return 0; }