字符串替换For linux C
1.临时空间给了个1024,不需要可减少长度。
2.结果只用用strcpy了,没校验。
1 bool Replace(char *str,const char *src, const char *des) 2 { 3 /* old -> new */ 4 int srclen = strlen(src); 5 int deslen = strlen(des); 6 int siplen = 0; 7 int buflen = 0; 8 char *pos = str; 9 char *ptr = NULL; 10 11 static char buf[1024]; 12 13 memset(buf, 0x00, 1024); 14 if(strcmp(src,des) == 0) 15 return true; 16 if(strlen(str) < srclen){ 17 // The lenth of old word is more then string! 18 return false; 19 } 20 21 while((ptr = strstr(pos, src)) != NULL) { 22 siplen = ptr - pos; 23 memcpy(buf + buflen, pos, siplen); 24 strcat(buf, des); 25 26 buflen += siplen + deslen; 27 pos = pos + siplen + srclen; 28 } 29 30 if (buflen != 0) { 31 strcpy(buf + buflen, pos); 32 strcpy(str, buf); 33 } 34 35 return true; 36 }