【发布时间】:2013-06-12 18:54:06
【问题描述】:
我正在尝试编写一个获取两个字符串的函数,一个称为 str1 的短字符串和一个称为 str2 的较长字符串。
该函数将计算在 str2 中找到 str1 的次数。
example: str1= 'ab' str2 = 'abab' print 2
但出于某种原因,对于上面的示例。我得到 3。这是我的代码:
int how_many_times(char* str1,char* str2)
{
int result=0,i,j=0;
for(i=0;i<strlen(str2);i++)
{
if((str1[i]==str2[j]))
{
while(str1[i]==str2[j])
{
j++;
if(j==strlen(str1))
{
result++;
j=0;
}
i++;
}
}
else
i++;
}
printf("%d",result);
getch();
return result;
}
【问题讨论】:
-
您可以使用
strstr。 -
你搞砸了你的索引。通过这些简短的输入,您可以写下 i、j 的值以及它们所指向的内容。你会发现你增加 i 太频繁了,而且你在实际检查字符串匹配之前就增加了 result(j 指向 'b',但 i 没有指向 str2 中的相应字符)。