我有一个二进制数据数组,其中我需要计算某个char序列出现的次数。 目前我定义了一个函数,找到了针的指针。在' haystack'
int indexOf(const char *needle, int needleLen, const char *haystack, int haystackLen) { /.../ }
如果无法找到针,则返回-1
,否则返回索引。
下一步是在indexOf
循环中运行while
(直到我们得到-1
)才能获得计数。
我的问题是:每当我在haystack
中找到索引时,如何从haystack
中取出indexOf
所确定的第一个字符的切片?
实施例:
我的草垛是hello_world
,针是o
。
indexOf
将返回4
。
如果没有第一个hello world
字符,我该怎么处理4
?
例如。我想要_world
答案 0 :(得分:4)
我的草堆是hello_world,针是o。 indexOf将返回4.如何在没有前4个字符的情况下获取一片hello世界?例如。我想_world
如果索引是4,则需要跳过前5个字符(记住C中的索引是基于0的。)
那将是haystack + 4 + 1
。只需记住相应地更新haystack
的大小,以便不要访问它。
或者在C:
idx = indexOf(needle, needleLEn, haystack + idx + 1, haystackLen - idx - 1);
如果idx
为4,则从索引5开始。