1

我必须在更大的字符串中计算特定 C 字符串的出现次数。我正在使用 strstr() 函数在大 C 字符串中使用 char 指针进行计数和前进。问题是它似乎计数得太少,就像文本的减少速度越来越快,跳过了大块的字符。我正在使用一个名为“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* 类型。

4

2 回答 2

5

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

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

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

于 2012-10-12T08:59:53.730 回答
1

你有

x+=x+...

你应该有

x = x+...

或者

x += ...
于 2012-10-12T09:05:52.027 回答