if (original == NULL || substr == NULL || replace == NULL)
{
return NULL;
}
newstr = strdup(original);
head = newstr;
while ((tok = strstr(head, substr)))
{
oldstr = newstr;
newstr = (char*) malloc(strlen(oldstr) - strlen(substr) + strlen(replace) + 1);
/*failed to alloc mem, free old string and return NULL */
if (newstr == NULL)
{
free(oldstr);
return NULL;
}
memcpy(newstr, oldstr, tok - oldstr);
memcpy(newstr + (tok - oldstr), replace, strlen(replace));
memcpy(newstr + (tok - oldstr) + strlen(replace), tok + strlen(substr), strlen(oldstr) - strlen(substr) - (tok - oldstr));
memset(newstr + strlen(oldstr) - strlen(substr) + strlen(replace), 0, 1);
head = newstr + (tok - oldstr) + strlen(replace);
free(oldstr);
}
return newstr;
}
//---------------------------------------------------------------------------