#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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgogCmNoYXIqIGluc2VydChjaGFyICpzcmMsIGNoYXIgKnMsIGNoYXIgKmRzdCkKewogICBjaGFyICp0ID0gc3RyZHVwKHNyYyArIHN0cmxlbihzKSk7CiAgIHN0cmNweShzcmMsIGRzdCk7CiAgIHN0cmNhdChzcmMsIHQpOwogICBmcmVlKHQpOwogICByZXR1cm4gc3JjOwp9CiAKaW50IG1haW4odm9pZCkKewogICBjaGFyIHNbQlVGU0laXSA9ICJIZWxsbywgd29ybGQsIEhlbGxvIjsKICAgY2hhciAqczEgPSAiSGkiOwogICBjaGFyICpzMiA9ICJIZWxsbyI7CiAKICAgcHJpbnRmKCIlc1xuIiwgcyk7CgogICBmb3IgKGNoYXIgKnB0ciA9IHN0cnN0cihzLCBzMik7IHB0cjsgcHRyID0gc3Ryc3RyKHB0ciArIDEsIHMyKSkKICAgICAgaW5zZXJ0KHB0ciwgczIsIHMxKTsKCiAgIHByaW50ZigiJXNcbiIsIHMpOwogCiAgIGZvciAoY2hhciAqcHRyID0gc3Ryc3RyKHMsIHMxKTsgcHRyOyBwdHIgPSBzdHJzdHIocHRyICsgMSwgczEpKQogICAgICBpbnNlcnQocHRyLCBzMSwgczIpOwoKICAgcHJpbnRmKCIlc1xuIiwgcyk7CgogICBmb3IgKGNoYXIgKnB0ciA9IHN0cnN0cihzLCBzMik7IHB0cjsgcHRyID0gc3Ryc3RyKHB0ciArIDEsIHMyKSkKICAgICAgaW5zZXJ0KHB0ciwgczIsIHMyKTsKCiAgIHByaW50ZigiJXNcbiIsIHMpOwoKICAgcmV0dXJuIDA7Cn0=