注意:字符串长度可自行定义;可以增加字符串长度判断,防止溢出。
// 方法一
int replace(char *src,char *old,char *new)
{
char buff[2048]; //转换缓冲区
memset(buff,0,sizeof(buff));
for(int i = 0;i < strlen(src);i++){
//查找目标字符串
if( !strncmp( src+i , old , strlen(old) ) ){
// 比对old成功,将new放入buff中
strcat(buff,new);
// 跳过old字符串
i += strlen(old) - 1;
}else{
// 将未比对成功的存在buff中
strncat(buff,src + i,1);
}
}
// 将buff赋值给src
strcpy(src,buff);
return 0;
}
// 方法二
int replace(char *src,char *old,char *new)
{
char *p = NULL;
int len = 0;
char newstr[2048] = {0};
// 查找src中old的位置
p = strstr(src,old);
while(p){ // 循环查找old,直至查询不到
memset(newstr,0x0,sizeof(newstr));
// src首位到old位置的长度
len = p - src;
// 将old前面的字符串复制到newstr中
strncpy(newstr,src,len);
// 将new拼接到newstr中
strcat(newstr,new);
// 将old后面的字符串复制到newstr中
strcat(newstr,p+strlen(old));
// 将newstr赋值给src
strcpy(src,newstr);
// 再次查找src中old的位置
p = strstr(src,old);
}
return 0;
}