2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C语言查找指定字符出现的次数 查找子字符串出现的次数 有个bug

C语言查找指定字符出现的次数 查找子字符串出现的次数 有个bug

时间:2024-03-07 04:45:18

相关推荐

C语言查找指定字符出现的次数 查找子字符串出现的次数 有个bug

/*输入abcabcabcff,然后查找abc出现的次数应该为三次*/

/*第一种算法感觉好麻烦,但是是我自己想出来的*/

#include

#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

#include

#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);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。