1.臨時空間給了個1024,不需要可減少長度。 2.結果只用用strcpy了,沒校驗。 bool Replace(char *str,const char *src, const char *des){ /* old -> new */ int srclen = strlen(src); int d ...
1.臨時空間給了個1024,不需要可減少長度。
2.結果只用用strcpy了,沒校驗。
bool Replace(char *str,const char *src, const char *des)
{
/* old -> new */
int srclen = strlen(src);
int deslen = strlen(des);
int siplen = 0;
int buflen = 0;
char *pos = str;
char *ptr = NULL;
static char buf[1024];
memset(buf, 0x00, 1024);
if(strcmp(src,des) == 0)
return true;
if(strlen(str) < srclen){
// The lenth of old word is more then string!
return false;
}
while((ptr = strstr(pos, src)) != NULL) {
siplen = ptr - pos;
memcpy(buf + buflen, pos, siplen);
strcat(buf, des);
buflen += siplen + deslen;
pos = pos + siplen + srclen;
}
if (buflen != 0) {
strcpy(buf + buflen, pos);
strcpy(str, buf);
}
return true;
}