#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
char *strreplace(char *base,char *oldstr,char *newstr)
{
int i=strlen(oldstr),j=strlen(newstr),fit=0;
char *temp=(char *)malloc((strlen(base)+1)*sizeof(char)),*p=base;
char *tempb=(char*)malloc((strlen(base)+fit*(j-i)+1)*sizeof(char));
if(strlen(base)<i)return 0;
while(*p)
{
if(strncmp(p,oldstr,i))p++;
else
{
p+=i;
fit++;
}
}
if (j>i)
{
strcpy(tempb,base);
base=tempb;
}
p=base;
while(*p)
{
if(strncmp(p,oldstr,i))p++;
else
{
strcpy(temp,p+i);
strncpy(p,newstr,j);
strcpy(p+j,temp);
}
}
if(j>i)base=tempb;
return base;
}
int main()
{
char base[]="Hello Java Java Java";
char oldstr[]="Java";
char newstr[]="DephiC++";
printf("%s/n",strreplace(base,oldstr,newstr));
getch();
return 0;
}
没有释放空间以后补上.