Можете объяснить ,что делает for(подробно если можно)

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

int main()
{
  char str1[102], str2[102]; 
  int  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;

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


  return 0;
}

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

Автор решения: Harry
for (istr = strstr(str1, str2);  // Первоначально находит вхождение str2 в str1,
                                 // сохраняет его в istr
     istr ;                      // Пока такое вхождение имеется (istr != NULL), 
                                 // выполняет тело цикла, после чего ...
     istr = strstr(istr+1,str2)) // ... ищет новое вхождение, сместившись на 1 
                                 // символ от найденного (чтоб не найти уже найденное)

     printf("Искомая строка начинается с символа %d\n", istr - str1 + 1); // А это то 
                                 // тело цикла, которое выполняется, пока istr != NULL
→ Ссылка