void replace(char* res, const char* oldstr, char* newstr)
{
if (res == NULL || oldstr == NULL || newstr == NULL)
return;
//alloc memory who bigger
int i = 0;
int oldlen = 0, newlen = 0, difflen = 0;
oldlen = strlen(oldstr);
newlen = strlen(newstr);
if (newlen > oldlen)
difflen = newlen - oldlen;
else
difflen = oldlen - newlen;
char *pt;
while ((pt = strstr(res, oldstr)) != NULL)
{
i = 0;
if (oldlen > newlen) //new string shorten
{
for (i=0; i<newlen; i++)
{
*pt = newstr[i];
pt++;
}
while (*(pt+difflen) != '/0')
{
*pt = *(pt+difflen);
pt++;
}
*pt = '/0';
}
else
{
char *p = (&res[strlen(res)]);
for (p; p != pt; p--)
{
*p = *(p-difflen);
}
i = 0;
while (i < newlen)
{
*pt = newstr[i];
pt++;
i++;
}
}
}
}
int main(int argc, char* argv[])
{
char a[128], b[128];
memset(a, 0, sizeof(a));
strcpy(a, "https://1.1.1.1/nhttps://2.2.2.2/nhttps://3.3.3.3");
printf("%s/n", a);
replace(a, "https://", "");
printf("%s/n", a);
printf("----------------/n");
memset(b, 0, sizeof(b));
strcpy(b, "http://1.1.1.1/nhttp://2.2.2.2/nhttp://3.3.3.3"); //
printf("%s/n", b);
replace(b, "http", "ftp");
printf("%s/n", b);
return 0;
}