C 语言实现字符串替换

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


typedef void VOID;
typedef char *  PSTR;
typedef int INT;
typedef char STR;

/***********************************************
 *  * StringReplace
 *   * 字符串替换
 *    *
 *     * pszInput       要转变的字符串
 *      * pszOld                要替换的子串
 *       * pszNew               被替换成的子串
 *        * pszOutput   输出的缓冲区
 *         * nOutputlen 输出缓冲区的长度
 *          *
 *           **********************************************/
VOID StringReplace(PSTR pszInput, PSTR pszOld, PSTR pszNew,PSTR pszOutput,INT nOutputlen)
{
        INT nLen=0;
        STR *s, *p;
        s = pszInput;
        while (s != NULL)
        {
                p = strstr(s, pszOld);

                if (p == NULL )
                {
                        memcpy(pszOutput+nLen,s,strlen(s)+nLen>nOutputlen?nOutputlen-nLen:strlen(s));
                        return ;
                }
                memcpy(pszOutput+nLen,s,p-s+nLen>nOutputlen?nOutputlen-nLen:p-s);
                nLen+=p-s+nLen>nOutputlen?nOutputlen-nLen:p-s;
                if(nLen>=nOutputlen)
                {
                        return;
                }
                memcpy(pszOutput+nLen,pszNew,strlen(pszNew)+nLen>nOutputlen?nOutputlen-nLen:strlen(pszNew));
                nLen+=strlen(pszNew)+nLen>nOutputlen?nOutputlen-nLen:strlen(pszNew);
                if(nLen>=nOutputlen)
                {
                        return;
                }
                s+=strlen(pszOld)+p-s;
        }
        return ;
}
int main(){

    char str1_t[10] = "111";
    char str2_t[3] = "11";
    char str3_t[2] = "1";
    char strout_t[10];
    StringReplace(str1_t,str2_t,str3_t,strout_t,10);
    printf("%s",strout_t);
    return 0;
}
原文地址:https://www.cnblogs.com/dpf-10/p/5952267.html