最近在写代码的时候,因为工作需要从一个较长的字符串中提取出一小段字符串,然后将新字符串填到提取出来字符串的位置,就像这样子,将str1中的yyyyy提取出来然后将str2填到str1中变成str3。
str1 = “xxxxyyyyyzzzzzdddd”;
str2 = “bbbb”;
str3 = “xxxxbbbbzzzzzdddd”;
首先我们需要自己写两个函数,一个提取指定字符串函数,一个替换字符串函数,下面代码中substr是替换函数,strrep是提取函数。
下面直接给大家上代码
#include <stdio.h>
#include <string.h>
int substr(char dst[], char src[],int start, int len)
{
int i;
for(i=0;i<len;i++)
{
dst[i]=src[start+i];
}
dst[i]='\0';
return i;
}
static char *strrep(char *str, char *src, char *dest)
{
char bstr[strlen(str)];
memset(bstr, 0, sizeof(bstr));
for(int i = 0; i < strlen(str); i++){
if(!strncmp(str+i, src, strlen(src))){
strcat(bstr, dest);
i += strlen(src) - 1;
}else{
strncat(bstr, str + i, 1);
}
}
strcpy(str, bstr);
return str;
}
int main()
{
char dst[50];
char src[]="ws://173.36.158.27:8090/haha/ws/xixi";
char str[]="//188.16.3.1";
char *p,*q;
int len1,len2,len;
len = strlen(src);
printf("%d\n",len);
p = strchr(src, ':');
len1 = strlen(p);
printf("%d\n",len1);
q = strrchr(src,':');
len2 = strlen(q);
printf("%d\n",len2);
int m;
m=substr(dst,src,len - len1,len1-len2);
printf("%s\n",dst);
printf("%d\n",m);
strrep(src, dst, str);
printf("%s\n",src);
return 0;
}