如何计算字符串中字符串的外观?

时间:2012-10-12 08:57:04

标签: c string pointers strstr

我必须在较大的C字符串中计算特定C字符串的外观。我正在使用strstr()函数来计算并使用char指针前进通过大C字符串。问题在于它似乎数量太少,比如文本的减少增加到快速,跳过大块的字符。我正在使用一个名为“x”的类型int变量来从左到右“缩小”文本,但我不知道分配新值的问题是什么。

int x=0;
while((p=strstr(text+x,triG))!=NULL)
{
    v[i]++;
    x+=x+3+(p-(text+x));
}

text是char *类型,动态地分配。 triG的类型为char [4],p的类型为char *。

2 个答案:

答案 0 :(得分:5)

每次比赛后,你的x值都会增加太多。

int x=0;
while((p=strstr(text+x,triG))!=NULL)
{
    v[i]++;
    x = p - text + strlen(triG);
}

您还可以简化x的计算。您正在添加和删除x - 这些都取消了。它使用strlen(triG)也更灵活,而不是硬编码,它总是4。

答案 1 :(得分:1)

你有

x+=x+...

你应该有

x = x+...

x += ...