在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值。
答案 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;
}