C语言中的strstr函数
说到strstr函数,可能很多人会比较陌生,对比其他的字符串函数比如strcpy,strcmp等等,它的确比较少用,但其实他也是一个非常有用和常见的函数,今天,就让我们一起来看一看吧!
首先我们来谈谈它的作用和组成:
char * strstr(const char * long,const char * short),它的参数是两个字符串long和short(不修改他们的内容,用const修饰),表示的是short在long中第一次出现的位置并返回long剩余的内容。
我们来看看最基础的strstr函数实现吧。```
// char str1[] = “aabcadacdd”;
//我们要找另一个字符串str2[]=“cd”;
其实基础原理很简单,就是将str2的首元素和str1依次比较,如果相同再比较str2第二个元素与str1当前元素的下一个元素是否相同,如果相同以此类推,直到str2到“\0”为止,最后返回str1的剩余内容;但是当str2后续有元素和str1对应的元素不相同时,说明没有匹配成功,这是需要从str2首元素重新与上一次str1中与str2的第二个元素比较的元素重新比较,重复上述过程,直至成功;如果未匹配到,最后返回null。(匹配过程比较繁琐,其实还有更好的匹配算法KMP,下次再说)
实现过程需要注意的是:
- 在整个过程str1和str2内容没有发生改变,所以我们需要定义两个指针对应他们,代替他们移动指向位