最近在写代码的时候,因为工作需要从一个较长的字符串中提取出一小段字符串,然后将新字符串填到提取出来字符串的位置,就像这样子,将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;
最近在写代码的时候,因为工作需要从一个较长的字符串中提取出一小段字符串,然后将新字符串填到提取出来字符串的位置,就像这样子,将str1中的yyyyy提取出来然后将str2填到str1中变成str3。str1 = “xxxxyyyyyzzzzzdddd”;str2 = “bbbb”;str3 = “xxxxbbbbzzzzzdddd”;首先我们需要自己写两个函数,一个提取指定字符串函数,一个替换字符串函数,下面代码中substr是替换函数,strrep是提取函数。下面直接给大家上代码#includ
在C语言中,并没有像java中对字符串操作的封装好的函数,在C语言中,都需要自己根据C语言函数库来实现常用的字符串操作
一、字符串的分割,根据子串进行分割
#include
#include
#include
using namespace std;
//字符串的分割,根据子串分割字符串
//参数:
//str被分割的字符串
//sub子串
//sub_before为str中sub所在位
static void strreplece(char *str, const char *oldstr, const char *newstr)
char s_str[strlen(str)];
memset(s_str, 0, sizeof(s_str));
for(int i=0; i<strlen(str); i++){
if(!strncmp(str+i, oldstr, strlen(old...
*oldstr: 被替换的字符串
*newstr: 用于替换的新字符串
*result: 参数输出执行替换后的结果(可用该函数返回值,也可用result参数接收替换后的结果)
char *strrpc(char *str,char *oldstr,char *newstr,cha...
使用strstr逐个寻找子串,然后替换;替换的时候分为几步:
1. 将sub后面的内容向前或向前移动(因为replace可能大于sub也可能小于sub,所以可能向前复制或者向后复制),腾出空间
2. 把replace拷贝到腾出的空间中。
3. 循环指针p移...