#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *strreplace(char *dest, char *src, const char *oldstr, const char *newstr, size_t len)
{
if(strcmp(oldstr, newstr)==0)
return src;
char *needle;
char *tmp;
dest = src;
while((needle = strstr(dest, oldstr)) && (needle -dest <= len))
{
tmp=(char*)malloc(strlen(dest)+(strlen(newstr)-strlen(oldstr))+1);
strncpy(tmp, dest, needle-dest);
tmp[needle-dest]='\0';
strcat(tmp, newstr);
strcat(tmp, needle+strlen(oldstr));
dest = strdup(tmp);
free(tmp);
}
return dest;
}
int main()
{
char *str="wo i love iyou";
char *old="i";
char *new="ILOVEYOUYA";
char *dest;
printf("%s\n",strreplace(dest, str, old, new,1));
printf("%s\n",strreplace(dest, str, old, new,5));
printf("%s\n",strreplace(dest, str, old, new,40));
return 0;
}