C语言程序求debug:统计一个字符串在另一个字符串中出现的次数。

如题所述

输入格式不对和输入缓冲区太小,字符串,是以\0为结果,但不一定不含空白符,scanf()的%s只输入不含空白符的,会在空白符处断做多个串,测试数据可能是一段文本,很多个单词
长度可以远越过101字节
char
a[10240],b[10240];
//一个串长达10K,足够了
while(scanf("%s%s",&a,&b)!=EOF)
//输入格式不好
可以试着改为:
while(gets(a)&&gets(b))
多利用一下标准库函数如strlen()
memcmp()
算了,我还是写个完整的吧
///////////////////
#include<stdio.h>
#define
MAXLEN
10240
int
main()
{
char
a[MAXLEN],b[MAXLEN];
int
i,c,len,sublen;
while(gets(a)&&gets(b))//while(scanf("%s%s",&a,&b)!=EOF)
{
c=0;
len
=
strlen(a);
sublen
=
strlen(b);
if(!sublen)
continue;//防止子串长度为0
for(i=0;
i<len-sublen;
i++)
{
if(memcmp(&a[i],b,sublen)==0)
{
c++;
i
+=
sublen-1;//如果"aaaa"可以当做不止两个"aa"则不要当前一行
}
}
printf("%d\n",c);
}
return
0;
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网