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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM