zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    [CTSC2018]暴力写挂
    【bzoj 2870】 最长道路tree
    [CTSC2010]珠宝商
    [JXOI2018]守卫
    [JXOI2018]排序问题
    [AHOI2014/JSOI2014]骑士游戏
    [SNOI2017]遗失的答案
    【LGP5437】【XR-2】约定
    【LGP5349】幂
    hdu-2688 Rotate---树状数组+模拟
  • 原文地址:https://www.cnblogs.com/dpf-10/p/5952267.html
Copyright © 2011-2022 走看看