2012-10-12 30 views
1

我必须计算一个更大的特定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 *。

+1

除了'triG'的最大长度以外,是否对'text'和'triG'的内容有任何限制?你是否需要在“aaaaaaaaaa”中找到所有出现的“aaa”? ;-) – alk

回答

5

在每场比赛结束后,你会增加x的值。

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

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

+0

非常感谢你......现在对我来说似乎很傻。我想,要通过C代码进行很多调试。祝你一切愉快:D –

+1

@IonutGo​​ldan很高兴这有助于。如果你对此感到满意,你可以考虑[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)吗? – simonc

1

你有

x+=x+... 

你应该有任何

x = x+... 

x += ...