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;
    }
  • 相关阅读:
    程序员写 2000 行 if else?领导:这个锅我不背
    var_dump
    CURL常用命令
    Socket阻塞模式和非阻塞模式的区别
    php框架之odp(一)
    git命令之git clone用法
    git push origin master和git push有什么区别?
    YouTube上最火的十个大数据视频
    Java两种核心机制
    Java四类八种数据类型
  • 原文地址:https://www.cnblogs.com/dpf-10/p/5952267.html
Copyright © 2011-2022 走看看