Как найти все позиции подстрок в строке?

Как найти все позиции подстрок в str1 равные str2?
Вот что смог сделать:

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str1[102], str2[102]; 
    int ans, n, m;

    fgets(str1, 101, stdin);
    n = strlen(str1) - 1;
    str1[n] = '\0';

    fgets(str2, 101, stdin);
    m = strlen(str2) - 1;
    str2[m] = '\0';
    char *istr;

    istr = strstr(str1, str2);

    if (istr == NULL)
        printf ("Строка не найдена\n");
    else
        printf ("Искомая строка начинается с символа %d\n", istr - str1 + 1);

    return 0;
}

Ответы (1 шт):

Автор решения: Mikhailo

Наверное, вам надо так? Просто в цикле ищем все вхождения.

for (istr = strstr(str1, str2); istr; istr = strstr(istr + 1, str2))
{
    printf("Искомая строка начинается с символа %d\n", istr - str1 + 1);
}
→ Ссылка