您的位置:首页 > 编程语言 > C语言/C++

【C语言】模拟实现strstr函数

2016-07-23 16:20 363 查看
问题描述:写一个函数模拟实现strstr函数。

思路:strstr函数的功能是判断在一个字符串在另一个字符串中是否有包含,比如strstr(str,string)就是判断字符串string是否是str的子串。如果是,则该函数返回string在str中首次出现的地址;否则,返回NULL。

基于这个特点,我们可以想到将string与str进行遍历,如果对比找到,返回出现的首地址;如果找不到,返回NULL。

#include<stdio.h>
#include<asset.h>

char *my_strstr(const char *str, char *string)
{
int i=0;
assert(str&&string);
while('\0'!=str)
{
while(1)
{
if(string[i]!=str[i])    //从第一个字符开始匹配字符是否相同
break;
if(string[i]=='\0')       //判断string的字符是否遍历完成
return str;
i++;
}
string++;
}
return NULL;
}

int main()
{
char string[] = "lazy";
char str[] = "The quick brown dog jumps over the lazy fox";
char *p=my_strstr(str,string);
int result=p-str+1;
if(p!=NULL)
printf("%s found at position %d\n\n", string,result);
else
printf( "%s not found\n", string);
system("pause");
return 0;
}


结果:lazy found at position 36
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: