Реализовать функции поиска последнего вхождения подстроки в строке - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д