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