以前在写字符串查找的时候一直用指针直接操作,写完之后出了很多BUG ,比如 从aaaaaa中找aa,会找到6个,今天在教别人写这个的时候别人非要用数组,以前觉得数组写不太好操作,现在发现还是很好操作的,还可以消除很多BUG。
/****************************************
函数功能:查找str1中出现str2出现的次数 并计算第一次出现在str1中str2第一个单词和最后一个单词的下标入口参数:str1:被查找字符串的指针 str2:需要查找的字符串
***************************************/
int my_strstr(const char *str1,const char *str2,int *h,int *t)
{
int len1 = strlen(str1);
int len2 = strlen(str2);
int i,j;
int count = 0;
int flag = 1;
// printf("%d %d \n",len1,len2);
for(i=0;i<len1;i++)
{
for(j=0;j<len2;j++)
{
if(str1[i+j] != str2[j])
break;
}
if(j == len2)
{
if(flag == 1)
{
*h = i;
*t = i+j-1;
flag = 0;
//printf("%d %d\n",i,i+j-1);
}
count++;
i = i+len2-1; //如果找到 i要跳过len2 防止从 aaaaa 找 aa会出现重复的bug
}
}
return count;
}