我们首先还是来看一下strstr在msdn中的定义:
char *strstr( const char *string, const char *strCharSet );
The strstr function returns a pointer to the first occurrence of strCharSet in string. The search does not include terminating null characters.
strstr函数返回字符串中第一个出现的strCharSet的指针。搜索不包括终止空字符
这里我们需要注意,定义中说的是,返回第一个出现子串的指针,也就是说,如果子串是"abc",主串是"wyjabcdyyabcqwe"的话,调用strstr函数是,返回的结果会是第一个出现"abc"的位置即"abcdyyabcqwe"而非是"abcqwe"
我们现在自己想办法来实现以下这个函数,首先我们确定一下这个函数的一个判断的逻辑,下面我用画图来简单的说明一下:
我们假设两个字符串分别是str1和str2,并且有两个指针分别是p1和p2分别指向他们的首字符,由于最后返回的值是一个char*类型,p1在不断的判断过程中会发生改变,如果我们返回p1的地址,那么最后得到的结果可能会与我们预期的结果有出入,所以我们再定义两个指针s1和s2分别等于p1和p2
下面我们来探究一下判断条件,即如何判断,我们首先判断*s1与*s2的值是否相等,如果相等的话就让s1++,s2++,再来判断*(s1 + 1)和 *(s2++)是否相等,以此类推,直到*s2 == ‘\0’的时候我们知道字符串str2已经判断完毕了,也就是说我们找到了,这个地方可以用循环来判断
图画的有点丑陋&#