C 字符串替换函数

#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语言中并没有字符串替换相关的函数,所有就自己写了一个,不过此程序也存在一定的缺陷,就是字符串越界问题,因为根据项目的需求,我只是将替换后整个字符串的长度变成原字符串的两倍,不过这是有缺陷的,望大神们指点迷津,或以后有好的想法再做改编。另外,最后的返回值是动态申请的空间,调用完成之后需要将空间释放掉。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值