有没有一种有效的方法来查找所有出现的非常量(包括重叠)并输出 C 中 str1char *str2
中char *str1
匹配的数字位置(而不是在 C++ 中,因为它不同)?
问问题
11595 次
2 回答
1
您的函数将strstr()
在while
循环中使用以查找 in 的第一个匹配str2
项str1
。然后,您可以打印该匹配的偏移量。您将在匹配后的第一个字符处继续搜索。strstr()
当不再找到匹配项时(通过strstr()
返回 NULL 表示) ,您将停止循环。
如果您需要不重叠,您需要知道 的长度,str2
然后在匹配的字符加上 的长度开始下一次搜索str2
。
于 2012-11-20T21:45:33.567 回答
-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;
}
于 2012-11-20T21:45:15.480 回答