// 參數說明:
// 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;
}