我必须计算一个特定的 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*类型。
最佳答案
您在每次匹配后将 x 的值增加太多。
int x=0;
while((p=strstr(text+x,triG))!=NULL)
{
v[i]++;
x = p - text + strlen(triG);
}
您还可以简化x
的计算。您同时添加和删除了 x
- 这些抵消了。使用 strlen(triG)
而不是硬编码假设它总是 4 也更灵活一些。
关于c - 如何计算字符串中字符串的出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12855515/