0

有没有一种有效的方法来查找所有出现的非常量(包括重叠)并输出 C 中 str1char *str2char *str1匹配的数字位置(而不是在 C++ 中,因为它不同)?

4

2 回答 2

1

您的函数将strstr()while循环中使用以查找 in 的第一个匹配str2str1。然后,您可以打印该匹配的偏移量。您将在匹配后的第一个字符处继续搜索。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 回答