Реализовать функции поиска последнего вхождения подстроки в строке - C (СИ)
Формулировка задачи:
Необходимо модифицировать данную функции, чтобы она указывала на индекс последнего вхождения слова в строке. То есть, если строка - Cyber Forum is Cyber Forum, а искомое слова Cyber, то она не должна выдавать 0.
int searchWord(const char str[81], const char word[21])
/*
Входные данные:
str – исходная строка
word – искомое слово
Выходные данные:
возвращаемое значение - индекс первого вхождения искомого слова в строку; возвращает -1, если слово не найдено
*/
{
int i = 0;
while (str)
{
const char* s1 = str;
const char* p1 = word;
while (*s1 == *p1)
{
s1++; p1++;
if (*p1 == '\0' || *s1 == '\0')break;
}
if (*p1 == '\0') return i;
if (*s1 == '\0') return -1;
str++;
i++;
}
return -1;
}Решение задачи: «Реализовать функции поиска последнего вхождения подстроки в строке»
textual
Листинг программы
//gcc 5.4.0
#include <stdio.h>
#include <string.h>
int lastword(const char *str, const char *word) {
int res = -1;
for (char *ptr=strstr(str, word); ptr; ptr=strstr(ptr+1, word))
res=ptr-str;
return res;
}
int main(void)
{
char str[] = "Cyber Forum is Cyber Forum";
char word[] = "Cyber";
printf("%d\n", lastword(str, word));
return 0;
}