c语言字符串中有一个函数叫:char* strstr(const char* firststring,const char* secondstring);
作用是检测字符串:firststring中是否包含了seconfstring,如果包含了返回第一次出现的指针,否则返回空指针。
闲来无事,自我实现一下这个函数:
char * my_strstr(const char* firststr,const char* secondstr){
int i=0,j=0,loc; //定义小标,用于循环遍历,loc用于保存第一次出现的位置
while(i<strlen(firststr)){ //遍历整个字符串
if(firststr[i] == secondstr[j]){ //如果出现相等的地方,开始判断之后的字符是否相等
loc = i; //记下当前位置,方便返回位置指针
while(j<strlen(secondstr)){
i++,j++;
if(firststr[i] == secondstr[j])
continue;
else
break;
}
if(j == strlen(secondstr)-1) //判断两个字符串对比的结果,如果下标j访问至结尾,那么字符串1包含串2
{
return (firststr+loc); //返回指针
}
else //如果没有到结尾,那要更新小标
{
j=0; //j置0,方便下一次的再比较
i=loc; //i置会原位,回溯
}
}//out if
i++;
}//while
if(i == strlen(firststr)-1) //如果遍历完整个字符,都没有找到,返回空指针
return NULL;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
觉得有用,点个赞呗!