#include <iostream>
#include <string.h>
using namespace std;
char* replace_my(char* str, char c, const char* rc) // 调用函数前,保证str能展开空间
{ char* ret = str;
char* cp = str; size_t cnt = 0;
int rcsize = (int)strlen(rc);
while (*cp) { if (*cp == c)
cnt++; // 统计找到 c 的次数 ++cp;
}
if (cnt <= 0) // 没找到 c
return ret; cp = str;
int bufsize = strlen(str) + rcsize * cnt + 1;
char * buf = new char[bufsize]; // 建立缓冲区buf
char * ps = buf; while (*cp) { *ps = *cp;
if (*cp == c) { // 替换字符 c 为字符串 rc
memcpy(ps, rc, rcsize); ps += (rcsize-1);
}
++cp;
++ps; }
*ps = '\0'; // 封闭缓冲区buf
strcpy(str , buf); delete[] buf;
return ret;}
int main()
{ char str[1024];
strcpy(str, "abcdefgabcdefgcccac");
cout << str << endl; replace_my(str, 'c', " <cccccccccccccccccccccccc> ");
cout << str << endl << endl;
return 0;}