#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
char* insert(char *src, char *s, char *dst)
{
   char *t = strdup(src + strlen(s));
   strcpy(src, dst);
   strcat(src, t);
   free(t);
   return src;
}
 
int main(void)
{
   char s[BUFSIZ] = "Hello, world, Hello";
   char *s1 = "Hi";
   char *s2 = "Hello";
 
   printf("%s\n", s);

   for (char *ptr = strstr(s, s2); ptr; ptr = strstr(ptr + 1, s2))
      insert(ptr, s2, s1);

   printf("%s\n", s);
 
   for (char *ptr = strstr(s, s1); ptr; ptr = strstr(ptr + 1, s1))
      insert(ptr, s1, s2);

   printf("%s\n", s);

   for (char *ptr = strstr(s, s2); ptr; ptr = strstr(ptr + 1, s2))
      insert(ptr, s2, s2);

   printf("%s\n", s);

   return 0;
}