strstr函数的实现

来源:互联网 发布:条码数据采集系统 编辑:程序博客网 时间:2024/06/04 19:24

要正确写出strstr函数,首先必须清楚地认识到这个函数的功能,这个函数用来在一个字符串中找到目标字符串。下面这段代码是我自己写的,不是特别简练,往后还会完善。

好了,我们来讲讲如何实现这个函数。

首先判断目标字符串是否是空字符串,如果是就返回0,如果不是就先求出目标字符串的长度(判断时要用到),这简单,就等于嵌套了一个strlen函数,下来就是遍历字符串来寻找目标字符串,用for循环,条件是 *(msg + i )== *( str + i ),意思是字符串中的字符相等才能进入循环,循环里嵌套 if  语句 !*(str+i+1),条件是如果遍历的这个字符下一个字符等于0(即下一个字符为‘\0’),就结束返回地址,否则就返回NULL.即没有找到。

char* my_strstr(char* msg, const char* str)   //找到一个字符串中目标字符串,返回目标字符串的前一位的地址{const char* end = str;int str_len = 0;int i = 0;while (*end)   //求目标字符串的长度{str_len++;end++;}if (str_len == 0)   //判断目标字符串是否为空{return 0;}else{while (*msg)      //遍历字符串,直至找到目标字符串或遍历完未找到{for (i = 0; *(msg + i) == *(str + i); i++){if (!*(str + i + 1)){return (char*)msg;}}msg++;}return NULL;}}

测试程序

int main(){char msg[] = "123lov4567love890";char msg_part[] = "love";char* ret = my_strstr(msg,msg_part);printf("%p\n",msg+10);  //用来检测if (ret == 0){printf("未找到");}else{printf("找到了,%p\n",ret);}return 0;}



0 0
原创粉丝点击