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

2024-12-05 00:58:50
推荐回答(1个)
回答(1):

输入格式不对和输入缓冲区太小,字符串,是以\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
#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;
ii++)
{
if(memcmp(&a[i],b,sublen)==0)
{
c++;
i
+=
sublen-1;//如果"aaaa"可以当做不止两个"aa"则不要当前一行
}
}
printf("%d\n",c);
}
return
0;
}