C语言 字符串替换 replace

C语言 字符串替换 replace

用的函数strlen 和mallo 实现c语言的replace

int *replace(char *p, char *dest, char *target){
    int d_=strlen(dest);int t_ = strlen(target);int p_ = strlen(p);
    int compare = t_ - d_;
    int index[ p_ / d_ +1];
    int count=0;
    for (int i = d_-1; i <p_ ; ++i) {
        if (p[i] == dest[d_-1]){
            int tmp=d_;
            int ok = 1;
            for (int j = i; j >i-d_; --j) {
                tmp--;
                if (dest[tmp]!= p[j]) { ok=0; };
            }
            if (ok) {index[count] = i-d_+1 ;count++ ;}
        }
    }
    int currentLen=p_+compare*count;
    char *cc = (char *) malloc(( p_+compare*count +1) *sizeof(char));
    int s=0,c=0;
    for (int k = 0; k < currentLen; ) {
        if ( index[c] ==k){
            for (int i = 0; i < t_; ++i) {
                cc[k] = target[i];
            }
            s+=d_;
            k+=t_;
            c++;
            continue;
        }
        cc[k] = p[s];
        s++;
        k++;
    }
    cc[currentLen] = '\0';
//    printf("%s", cc);
    return 0;
}

喜欢的话请关注我,会不定时更新一些有用的东西

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值