/*输入abcabcabcff ,然后查找abc出现的次数应该为三次*/
/*第一种算法感觉好麻烦,但是是我自己想出来的*/
#include<stdio.h>
#define MAX 100
int main(void)
{
char *sourse,*dst;
char a[MAX],b[MAX];
int dstlen=0,flag=0,time=0;
sourse=a;
dst=b;
printf("Input the sourse string/n");
gets(sourse);
printf("Input the dst string/n");
gets(dst);
while(*sourse!='/0')
{
flag=0;
if(*sourse==*dst)/*得到第一个相等的字符*/
{
dst++;
flag=1;
}
if(*dst=='/0') /*如果字串结束则进行下一次对比*/
{
time++;
dst=b;
}
sourse++;
if(flag) /*如果第一个字符相等则判断字串的第二个字符跟母串接下来的字符是否相等*/
if(*dst!=*sourse)
{
dst=b;
continue;
}
}
printf("In it %d tiems/n",time);
}
/*第二种算法,借鉴了K&R书中的算法,比较经典各位看客也可以对比下哈*/
#include<stdio.h>
#include<string.h>
#define MAX 100
int main(void)
{
int i,j,k=0,time=0,l=0;
char *sourse,*dst,a[MAX],b[MAX];
sourse=a;
dst=b;
printf("Input sourse string/n");
gets(sourse);
printf("Input dst string/n");
gets(dst);
l=strlen(dst);
printf("%d/n",l);
for(i=0;*(sourse+i)!='/0';i++)
{
for(j=i,k=0;*(dst+k)!='/0'&&*(sourse+j)==*(dst+k);j++,k++)
;
if(*(dst+k)=='/0')
{
time++;
i=i+l-1;/*这句很重要不然就会出现dddddff查找dd次数为4的问题*/
}
}
printf("dst sting In sourse string %d times/n",time);
}
子字符串的查找
最新推荐文章于 2022-01-04 08:56:54 发布