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

来源:互联网 发布:长沙unity3d培训 编辑:程序博客网 时间:2024/05/17 15:19

方法一:

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 100int 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;}


原创粉丝点击