实现在一个字符串中查找子串的函数:
先建立整体框架:
#include <stdio.h> int main() { char str[] = "hello world !"; char sub[] = "orl"; char * ret = NULL; ret = my_strstr(str, sub); printf("%s\n", ret); return 0; }
再来写具体的函数实现:是不是发现其实很简单呢?char * my_strstr(const char * str, const char * sub) //两个字符串的内容均不需要发生改变,加上const { char * tmp_str = (char *)str; char * tmp_sub = (char *)sub; assert(str != NULL); //断言字符串非空,要包含头文件assert.h assert(sub != NULL); while (*tmp_str != '\0') { if (*tmp_str == *tmp_sub) { //发现相等字符,备份当前位置 char *tmp_sr = tmp_str; char *tmp_sb = tmp_sub; while (*tmp_sub != '\0') { //子串未比较到最后一位,进入循环 if (*tmp_sr == *tmp_sb) { //相等,继续往后比 ++tmp_sr; ++tmp_sb; } else { //发现不相等字符,跳出内层循环 break; } } if (*tmp_sb == '\0') //若子串比较完,则找到 return tmp_str; } ++tmp_str; //外层循环的 条件 } return NULL; //没找到返回NULL }
strstr()函数自实现
最新推荐文章于 2023-10-15 17:50:10 发布