查找字符串出现的次数

作者在 2010-07-14 23:35:49 发布以下内容
/*输入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;
            }
    
    }
        printf("dst sting In sourse string %d times\n",time);
}
 
默认分类 | 阅读 759 次
文章评论,共0条
游客请输入验证码
浏览52058次
文章分类