输入参数: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]