子字符串的查找

/*输入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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值