首页 > 代码库 > str_replace字符串替换
str_replace字符串替换
字符串替换, src 源字符串, buf_size 缓冲大小, search搜索的字符串大小, repstr 需要替换成的字符串
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | int str_replace( char *src, unsigned int buf_size, char * search, char *repstr) { if (!src || !search || !repstr|| buf_size < 0) { return -1; } const unsigned int size = buf_size + 1024 ; char * temp = ( char *) malloc (size); memset (temp, 0x00, size); char * src_pos = src; char * result = src; char * dst_pos = temp; unsigned int length = 0; int search_len = strlen (search); int rep_len = strlen (repstr); do { src_pos = strstr (src_pos, search); if (!src_pos) { strcpy (dst_pos, result); length += search_len; break ; } strncpy (dst_pos, result, src_pos - result); dst_pos += src_pos - result; //replace strcat (dst_pos, repstr); dst_pos += rep_len; length += src_pos - result + rep_len; src_pos += search_len; result = src_pos; } while (src_pos); if (length >= buf_size) { free (temp); temp = NULL; return -1; } else { _snprintf_c(src,buf_size, "%s" , temp); free (temp); temp = NULL; return 0; } } int main( void ) { char buf[512] ={ "123%4235%%6723" }; printf ( "%s\n" , buf); str_replace(buf,512, "%" , "love" ); printf ( "%s\n" , buf); return 0; } |
结果输出:
123%4235%%6723
123love4235lovelove6723
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。