是否有高效方法查找char *str2
中非const char *str1
的所有出现(包括重叠)并输出C中str1中匹配的数字位置(不是在C ++中,因为它不同)?
答案 0 :(得分:1)
您的函数将在while
循环中使用strstr()
来查找str2
中str1
的第一个匹配项。然后,您可以打印该匹配的偏移量。您将在比赛结束后的第一个角色继续搜索。当strstr()
不再找到匹配项时,您将停止循环(由strstr()
发出信号,返回NULL)。
如果您需要不重叠,则需要知道str2
的长度,并且您将在匹配的字符加上str2
的长度开始下一次搜索。
答案 1 :(得分:-1)
在循环中使用strstr()
:
int get_substr_count(const char * haystack, const char *needle)
{
int count = 0;
const char *tmp = haystack;
while( tmp = strstr( tmp, needle)){
printf( "Position: %d\n", (int)(tmp-haystack));
++count;
}
return count;
}