请用C语言实现字符串的查找函数strstr, 找到则返回子字符串的地址,没有找到返回为空,请用数组操作与指针操作实现
看到题目想到最简单的方法就是母字符串和子字符串比较,如果不同,将指向母字符串的指针向前移动,继续查找,
下面我们分别用数组操作实现,大家可以很容易改成指针操作实现,
国际惯例,参考前面文章新建一个vs2013的工程,经过前面的学习大家已经对开发环境很熟悉了,下面我们直接上代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> char *mystrstr(char *Str, const char *SubStr) { int StrLen, SubStrLen; StrLen = strlen(Str); SubStrLen = strlen(SubStr); //Str长度小于SubStrLen时直接跳过For返回空, //如果Str长度大于等于SubStr则依次递进比较 for (int i = 0; i <= StrLen - SubStrLen; i++) { int j; for (j = 0; j < SubStrLen; j++) { if (Str[i + j] != SubStr[j]) //如果不等就跳出循环 break; } if (j == SubStrLen) //如果j == SubStrLen则找到匹配的子串 return &Str[i]; } return NULL; } int main() { printf("%s ", mystrstr("testxx123", "xx12")); return 0; }
运行效果如下图:
如果有什么问题和疑问可以在下面留言互相探讨。
原题我已经上传到这里了http://download.csdn.net/detail/yincheng01/6461073 ,
解压密码为 c.itcast.cn