strstr函数
与strchr函数类比就可以知道,这个函数是用来从一个字符串中找出与另一个字符串相同的的部分。
函数原型如下:
char *strstr(char *str1, const char *str2);
返回值:如果str1中含有str2,则会返回str2在str1的首次出现的地址;如果str2不是str1的子串则会返回NULL。
来看一个CPP网站给出的例子:
/* strstr example */ #include <stdio.h> #include <string.h> int main () { char str[] ="This is a simple string"; char * pch; pch = strstr (str,"simple"); strncpy (pch,"sample",6); puts (str); return 0; }
run后的结果是:This is a sample string.
再来看一下它的实现:
GCC版本:
char *strstr(const char*s1,const char*s2) { const char*p=s1; const size_tlen=strlen(s2); for(;(p=strchr(p,*s2))!=0;p++) { if(strncmp(p,s2,len)==0) return (char*)p; } return(0); }
还有一种比较好理解:
char *mystrstr(char*s1,char*s2) { if(*s1==0) { if(*s2) return (char*)NULL; return (char*)s1; } while(*s1) { int i=0; while(1) { if(s2[i]==0) return s1; if(s2[i]!=s1[i]) break; i++; } s1++; } return (char*)NULL; }