您的位置:首页 > 其它

str_replace字符串替换

2014-04-29 18:07 399 查看
字符串替换, src 源字符串, buf_size 缓冲大小, search搜索的字符串大小, repstr 需要替换成的字符串

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: