Есть ли функция в C, чтобы найти перекрытие подстроки? - PullRequest
0 голосов
/ 17 мая 2011

в 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 ]

4 голосов
/ 17 мая 2011

Использование 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 голос
/ 17 мая 2011
char *strstr(const char *str1, const char *str2);

Функция strstr () находит появление str2 в str1 и возвращает указатель на появление str2 в str1. Если совпадений не найдено, то возвращается нулевой указатель.

0 голосов
/ 17 мая 2011

Встроенной функции нет, но написать ее довольно просто:

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;
}
0 голосов
/ 17 мая 2011

Удален ответ, как мне кажется, я пропустил пункт

...