Chinaunix首页 | 论坛 | 博客
  • 博客访问: 115817
  • 博文数量: 22
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-08 20:21
文章分类
文章存档

2011年(9)

2009年(1)

2008年(12)

我的朋友

分类: C/C++

2008-07-31 13:39:25

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);
    }
}
阅读(6483) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:字符串编码转换函数 unicode转换成utf8

给主人留下些什么吧!~~