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

你可能感兴趣的:(c,字符串替换)