字符串替換函數

// 參數說明:  

// in, 源字符串  

// out, 存放最後結果的字符串  

// outlen,out最大的大小  

// src,要替換的字符串  

// dst,替換成什麼字符串  

/********************************************************************  

*  Function:   str_replace()  

*  Description: 在一個字符串中查找一個子串,並且把所有符合的子串用  

                另一個替換字符串替換。  

*  Calls:        memcpy();  

*  Called By:    無  

*  Input:       p_source:要查找的母字符串; p_seach要查找的子字符串;  

                 p_repstr:替換的字符串;  

*  Output:      p_result:存放結果;  

*  Return :      返回替換成功的子串數量;  

*  Author:       ChenZhiFa  

*  Others:       p_result要足夠大的空間存放結果,所以輸入參數都要以\0結束;  

*  date of completion:   

*********************************************************************/  

int str_replace(char *p_result,char* p_source,char* p_seach,char *p_repstr)  

{  

  

    int c = 0;  

    int repstr_leng = 0;  

    int searchstr_leng = 0;  

  

    char *p1;  

    char *presult = p_result;  

    char *psource = p_source;  

    char *prep = p_repstr;  

    char *pseach = p_seach;  

    int nLen = 0;   

  

    repstr_leng = strlen(prep);  

    searchstr_leng = strlen(pseach);  

  

    do{   

        p1 = strstr(psource,p_seach);  

  

        if (p1 == 0)  

        {  

            strcpy(presult,psource);  

            return c;  

        }  

  

        c++;  //匹配子串計數加1;  

 //       printf("p_result:%s\r\n",p_result);  

 //       printf("p_source:%s\r\n",p_source);  

  

        // 拷貝上一個替換點和下一個替換點中間的字符串  

        nLen = p1 - psource;  

        memcpy(presult, psource, nLen);  

  

        // 拷貝需要替換的字符串  

        memcpy(presult + nLen,p_repstr,repstr_leng);  

  

        psource = p1 + searchstr_leng;  

        presult = presult + nLen + repstr_leng;  

  

 

    }while(p1);  

  

    return c;  

  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章