char* ReplaceSubStr(const char* str, const char* srcSubStr, const char* dstSubStr,char * out) {
/*
基本思路:迭代,然后使用双指针跟踪目标地址,和原地址,有点归并排序中合的味道。
注意:python、C++、Java中都有相应比较方便的库,但是本题就是想考察造轮子的过程,但是
可以使用C语言的库。
*/
int i;
const char * ptr_str;
char * ptr_out=out;
for (i=0; i<strlen(str);) {
if ((ptr_str = strstr(str + i, srcSubStr)) == NULL) {
memcpy(ptr_out, str+i,strlen(str + i)+1);
break;
}
else {
memcpy(ptr_out, str + i, ptr_str - (str + i));
ptr_out += ptr_str - (str + i);
memcpy(ptr_out, dstSubStr, strlen(dstSubStr));
ptr_out += strlen(dstSubStr);
i = ptr_str - str + strlen(srcSubStr);
}
}
return out;
}