c语言实现字符串字串的替换

方法一:

void Substitute(char *pInput, char *pOutput, char *pSrc, char *pDst)
{
    char *pi, *po, *p;
    int nSrcLen, nDstLen, nLen;

    // 指向输入字符串的游动指针.
    pi = pInput;
    // 指向输出字符串的游动指针.
    po = pOutput;
    // 计算被替换串和替换串的长度.
    nSrcLen = strlen(pSrc);
    nDstLen = strlen(pDst);

    // 查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null).
    p = strstr(pi, pSrc);
    if(p) {
        // 找到.
        while(p) {
              // 计算被替换串前边字符串的长度.
            nLen = (int)(p - pi);
              // 复制到输出字符串.
            memcpy(po, pi, nLen);
            memcpy(po + nLen, pDst, nDstLen);
              // 跳过被替换串.
            pi = p + nSrcLen;
              // 调整指向输出串的指针位置.
            po = po + nLen + nDstLen;
              // 继续查找.
            p = strstr(pi, pSrc);
        }
        // 复制剩余字符串.
       strcpy(po, pi);
    }
    else
    {
        // 没有找到则原样复制.
       strcpy(po, pi);
    }
}

方法二:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAXLEN 100
int ReplaceStr(char *sSrc, char *sSubStr, char *sReplaceStr)
{
    int  StringLen;
    char caNewString[MAXLEN];
    
    char *FindPos = strstr(sSrc, sSubStr);
    if( (!FindPos) || (!sSubStr) )
        return -1;
    
    while( FindPos )
    {
        memset(caNewString, 0, sizeof(caNewString));
        StringLen = FindPos - sSrc;
        strncpy(caNewString, sSrc, StringLen);
        strcat(caNewString, sReplaceStr);
        strcat(caNewString, FindPos + strlen(sSubStr));
        strcpy(sSrc, caNewString);
        
        FindPos = strstr(sSrc, sSubStr);
    }
    
    return 0;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值