输入参数:char* search 需要搜索的字符串
char* replace 被替换的字符串
char* str 原始字符串
返回 char* 用完后用free()释放
[codesyntax lang=”c” lines=”normal”]
/*
*Function:str_replace
*Parameter:char* search,char* replace,char* str
*Call:char *str_replace(char* search,char* replace,char* str);
*Return: string
*Required:malloc.h
*Required:string.h
*Description: replace the string in the string
*/char *str_replace(char* search,char* replace,char* str)
{
int lstr,lse,lre;
char* r,*p,*nptr;
lse=strlen(search);
lre=strlen(replace);
lstr=strlen(str);
if(lse>lstr)
{
return NULL;
}
r=(char* )malloc(lstr+1);
if(r==NULL)
{
printf("Failed to allocate memory");
exit(-2);
}
strcpy(r,str); /*Copy the string to new memory*/
p=strstr(r,search);
while(p!=NULL)
{
if(lse==lre)
{
memcpy(p,replace,lre); /*Just Copy the string*/
}else if(lse>lre) /*No allocation required*/
{
memset(p,' ',lse); /*Clear it first*/
memcpy(p,replace,lre); /*Copy data*/
memcpy(p+lre,p+lse,lstr-(p-r+lse)+1);/*Remove the blanks*/
}else{
nptr=realloc(r,lstr+(lre-lse));/*Expand the space first*/
if(nptr==NULL)
{
printf("Failed to allocate memory");
exit(-2);
}
r=nptr;
memcpy(p+lre,p+lse,lstr-(p-r+lse)+1);/*Move data now*/
memcpy(p,replace,lre);
}
p=strstr(p+lre,search); /*To prevent the replace string contained the search string*/
}
return r;
}
[/codesyntax]