Реализовать функции поиска последнего вхождения подстроки в строке - 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;
}

Код к задаче: «Реализовать функции поиска последнего вхождения подстроки в строке - C (СИ)»

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;
}

14   голосов, оценка 4.071 из 5


СОХРАНИТЬ ССЫЛКУ