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

C 如何计算字符串中字符串的外观?,c,string,pointers,strstr,C,String,Pointers,Strstr,我必须计算一个更大的C字符串中特定C字符串的外观。我使用strstr()函数通过一个字符指针对大C字符串进行计数和前进。问题是,它似乎计数太少,比如文本的缩减速度越来越快,跳过了大块字符。我使用一个名为“x”的int类型变量从左到右“减少”文本,但我不知道分配新值的问题是什么 int x=0; while((p=strstr(text+x,triG))!=NULL) { v[i]++; x+=x+3+(p-(text+x)); } 文本类型为char*,动态定位。triG的类型

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

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

文本类型为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。

每次匹配后,x的值都会增加太多

int x=0;
while((p=strstr(text+x,triG))!=NULL)
{
    v[i]++;
    x = p - text + strlen(triG);
}
您还可以简化
x
的计算。您同时添加和删除了
x
——这些都被取消了。使用strlen(triG)比硬编码更灵活,假设它总是4

x+=x+...
你两个都可以

x = x+...

你有

x+=x+...
你两个都可以

x = x+...


除了
triG
的最大长度外,
文本和
triG
的内容是否有任何限制?例如,您是否需要查找“aaaaaaaa”中出现的所有“aaa”?;-)除了
triG
的最大长度外,
文本和
triG
的内容是否有任何限制?例如,您是否需要查找“aaaaaaaa”中出现的所有“aaa”?;-)非常感谢你…现在我觉得这太傻了。我想,要在C代码上进行大量调试。A祝大家度过愉快的一天:D@IonutGoldan很高兴这有帮助。如果你对这个答案满意,你能考虑吗?非常感谢…现在对我来说似乎很愚蠢。我想,要在C代码上进行大量调试。A祝大家度过愉快的一天:D@IonutGoldan很高兴这有帮助。如果你对这个答案满意,你能考虑吗?