C中是否有一个函数来查找子串重叠?

时间:2011-05-17 02:17:25

标签: c arrays function substring

在C中,是否有一个函数,当给予两个字符串时,将返回子字符串重叠或重叠的大小?所以喜欢这样的事情:

char s1[5] = {cart};
char s2[4] = {car};
int overlap;
overlap = get_overlap(s1, s2); /*or have overlap be a string if it returns the overlap*.

然后重叠将是3.

如果没有,我如何制作一个将返回重叠的int值。

4 个答案:

答案 0 :(得分:4)

使用strstr。链接示例:

/* strstr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="This is a simple string";
  char * pch;
  pch = strstr (str,"simple");
  strncpy (pch,"sample",6);
  puts (str);
  return 0;
}

输出:

  

这是一个示例字符串

注意:

整个子字符串将匹配;请注意strstr不会进行部分匹配。

答案 1 :(得分:1)

char *strstr(const char *str1, const char *str2);
  

函数strstr()找到   在str1和str中出现str2   返回指向出现的指针   str1中的str2。如果找不到匹配,那么   返回一个空指针。

答案 2 :(得分:0)

删除了答案,因为我认为我错过了这一点

答案 3 :(得分:-1)

没有内置函数,但编写起来非常简单:

size_t overlap(const char *s1, const char *s2)
{
    size_t i = 0;

    while (s1[i] && s2[i] && s1[i] == s2[i])
        i++;

    return i;
}