#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* StrReplace(char*src,char*rpl,char*dest)
{
char *temp,*buf,*str;
int ind=0,i=0,next=0;
size_t srcLen=0,destLen=0,rplen=0,len=0;
srcLen=strlen(src);
destLen=strlen(dest);
rplen=strlen(rpl);
buf=(char*)malloc(sizeof(char)*srcLen*2);
strncpy(buf,src,srcLen);
if (!rplen) return buf;
temp=(char*)malloc(sizeof(char)*srcLen*2);
strncpy(temp,src,srcLen);
temp[srcLen]=0;
while ((str=strstr(temp+next,rpl)) != NULL) {
ind=(int)(str-temp);
next+=ind+destLen;
i=ind;
strncpy(buf+i, dest, destLen);
i+=destLen;
len=strlen(temp);
strncpy(buf+i,temp+ind+rplen,len-ind+1);
len=strlen(buf);
strncpy(temp,buf,len);
temp[len]=0;
}
free(temp);
return buf;
}
在作项目过程中发现,C语言中并没有字符串替换相关的函数,所有就自己写了一个,不过此程序也存在一定的缺陷,就是字符串越界问题,因为根据项目的需求,我只是将替换后整个字符串的长度变成原字符串的两倍,不过这是有缺陷的,望大神们指点迷津,或以后有好的想法再做改编。另外,最后的返回值是动态申请的空间,调用完成之后需要将空间释放掉。
#include <string.h>
#include <stdlib.h>
char* StrReplace(char*src,char*rpl,char*dest)
{
char *temp,*buf,*str;
int ind=0,i=0,next=0;
size_t srcLen=0,destLen=0,rplen=0,len=0;
srcLen=strlen(src);
destLen=strlen(dest);
rplen=strlen(rpl);
buf=(char*)malloc(sizeof(char)*srcLen*2);
strncpy(buf,src,srcLen);
if (!rplen) return buf;
temp=(char*)malloc(sizeof(char)*srcLen*2);
strncpy(temp,src,srcLen);
temp[srcLen]=0;
while ((str=strstr(temp+next,rpl)) != NULL) {
ind=(int)(str-temp);
next+=ind+destLen;
i=ind;
strncpy(buf+i, dest, destLen);
i+=destLen;
len=strlen(temp);
strncpy(buf+i,temp+ind+rplen,len-ind+1);
len=strlen(buf);
strncpy(temp,buf,len);
temp[len]=0;
}
free(temp);
return buf;
}
在作项目过程中发现,C语言中并没有字符串替换相关的函数,所有就自己写了一个,不过此程序也存在一定的缺陷,就是字符串越界问题,因为根据项目的需求,我只是将替换后整个字符串的长度变成原字符串的两倍,不过这是有缺陷的,望大神们指点迷津,或以后有好的想法再做改编。另外,最后的返回值是动态申请的空间,调用完成之后需要将空间释放掉。