c语言字符串函数替换子串,C语言字符串替换

C语言字符串替换

C语言实现字符串替换函数:

创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计、网站建设、永善网络推广、微信小程序开发、永善网络营销、永善企业策划、永善品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供永善建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

#include stdio.h

#include stdlib.h

#include ctype.h

#include string.h

//字符串替换函数

/********************************************************************

* Function: my_strstr()

* Description: 在一个字符串中查找一个子串;

* Input: ps: 源; pd:子串

* Return : 0:源字符串中没有子串; 1:源字符串中有子串;

*********************************************************************/

char * my_strstr(char * ps,char *pd)

{

char *pt = pd;

int c = 0;

while(*ps != '\0')

{

if(*ps == *pd)

{

while(*ps == *pd *pd!='\0')

{

ps++;

pd++;

c++;

}

}else

{

ps++;

}

if(*pd == '\0')

{

return (ps - c);

}

c = 0;

pd = pt;

}

return 0;

}

/********************************************************************

* Function: memcpy()

* Description: 复制一个内存区域到另一个区域;

* Input: src: 源;

count: 复制字节数.

* Output: dest: 复制目的地;

* Return : dest;

*********************************************************************/

void * memcpy(void * dest,const void *src,size_t count)

{

char *tmp = (char *) dest, *s = (char *) src;

while (count--)

*tmp++ = *s++;

return dest;

}

/********************************************************************

* Function: str_replace()

* Description: 在一个字符串中查找一个子串,并且把所有符合的子串用

另一个替换字符串替换。

* Input: p_source:要查找的母字符串; p_seach要查找的子字符串;

p_repstr:替换的字符串;

* Output: p_result:存放结果;

* Return : 返回替换成功的子串数量;

* Others: p_result要足够大的空间存放结果,所以输入参数都要以\0结束;

*********************************************************************/

int str_replace(char *p_result,char* p_source,char* p_seach,char *p_repstr)

{

int c = 0;

int repstr_leng = 0;

int searchstr_leng = 0;

char *p1;

char *presult = p_result;

char *psource = p_source;

char *prep = p_repstr;

char *pseach = p_seach;

int nLen = 0;

repstr_leng = strlen(prep);

searchstr_leng = strlen(pseach);

do{

p1 = my_strstr(psource,p_seach);

if (p1 == 0)

{

strcpy(presult,psource);

return c;

}

c++; //匹配子串计数加1;

printf("结果:%s\r\n",p_result);

printf("源字符:%s\r\n",p_source);

// 拷贝上一个替换点和下一个替换点中间的字符串

nLen = p1 - psource;

memcpy(presult, psource, nLen);

// 拷贝需要替换的字符串

memcpy(presult + nLen,p_repstr,repstr_leng);

psource = p1 + searchstr_leng;

presult = presult + nLen + repstr_leng;

}while(p1);

return c;

}

#define MAX 200

int main(void)

{

int i = 0;

char s[MAX] ={0}; //存放源字串

char s1[MAX]={0}; //存放子字串

char s2[MAX]={0}; //存放替换字串

char result_a[2000] = {0};//存放替换结果;

char *p,*ptm,*pr;

puts("Please input the string for s:");

scanf("%s",s);

puts("Please input the string for s1:");

scanf("%s",s1);

puts("Please input the string for s2:");

scanf("%s",s2);

ptm = s;

pr = result_a;

i = str_replace(pr,ptm,s1,s2);

printf("替换%d个子字符串;\r\n",i);

printf("替换后结果:%s\r\n",result_a);

system("pause");

}

C语言中如何用一个字符串替换一个主串中的子串

参考以下代码

#include

string.h

//oldstr原字符串,

newstr新字符串,

oldsubstr原字符串中要替换的

子串

,

newsubstr新字符串中替换后的

新子

void

replace(char

*oldstr,

char

*newstr,

char

*oldsubstr,

char

*newsubstr)

{

int

i,

j;

int

nLen

=

strlen(oldstr);

int

nLenSub

=

strlen(oldsubstr);

for(i=0,

j=0;

inLen;)

{

if(0

==

strncmp(oldstr+i,

oldsubstr,

nLenSub))

{

strcat(newstr+j,

newsubstr);

j

+=

strlen(newsubstr);

i

+=

nLenSub;

}

else

{

newstr[j++]

=

oldstr[i++];

}

}

}

C语言实现将一个字符串里的一个子字符串替换为另一个, 比如”HelloIamLi”将其中的”am”替换为”ask”

#includestdio.h

#includestring.h

void main()

{

char ch[40],ch2[20],ch3[20],i,j,temp,x;

printf("请输入第一串字符:");

gets(ch);

printf("请输入第二串字符:");

gets(ch2);

printf("请输入插入的位置:");

scanf("%d",i);

temp = i;

for(j=0;ch[temp] != '\0';j++,temp++)

ch3[j] = ch[temp];

ch3[j]='\0';

for(j=0;jstrlen(ch);j++,i++)

ch[i] = ch2[j];

strcat(ch,ch3);

ch[i] = '\0';

puts(ch);

}

C语言中子串替换函数

#includestdio.h

#includestring.h

#define N 80

void Displaces(char s1[],char s2[],char s3[])

{

char s4[N];

int i=0,j;

while(s1[i]!='\0')

{

if(s1[i]==s2[0])

{

for(j=0;jstrlen(s2);j++)

{

s4[j]=s1[j+i];

}

s4[j]='\0';

if(strcmp(s2,s4)==0)

{

for(j=0;jstrlen(s2);j++,i++)

{

s1[i]=s3[j];

}

}

else

i++;

}

else

i++;

}

}

int main(void)

{

char s1[N],s2[N],s3[N];

gets(s1);

gets(s2);

gets(s3);

Displaces(s1,s2,s3);

puts(s1);

return 0;

}

应该是这样的吧。。。 给分吧!哪不明白可以找我!

c语言 子串替换

char  *replace(char  *source,  char  *sub,  char  *rep) 

{ 

 char  *result; 

 /*pc1  是复制到结果result的扫描指针*/

 /*pc2  是扫描 source 的辅助指针*/

 /*pc3  寻找子串时,为检查变化中的source是否与子串相等,是指向sub的扫描指针 */

 /*找到匹配后,为了复制到结果串,是指向rep的扫描指针*/

 char  *pc1,  *pc2,  *pc3; 

 int  isource,  isub,  irep; 

 isub  = strlen(sub); /*对比字符串的长度*/

 irep  = strlen(rep); /*替换字符串的长度*/

 isource= strlen(source); /*源字符串的长度*/ 

 if(NULL == *sub)

  return strdup(source); 

 /*申请结果串需要的空间*/

 result  = (char *)malloc(( (irep isub) ? (float)strlen(source) / isub* irep+ 1:isource ) * sizeof(char));

 pc1  =  result; /*为pc1依次复制结果串的每个字节作准备*/

 while(*source  !=  NULL) 

 { 

  /*为检查source与sub是否相等作准备,为pc2,pc3 赋初值*/

 pc2  =  source; 

 pc3  =  sub;

  /* 出循环的(任一)条件是: 

*  *pc2 不等于 *pc3 (与子串不相等) 

*  pc2  到源串结尾 

*  pc3  到源串结尾 (此时,检查了全部子串,source处与sub相等) 

*****************************************************/

 while(*pc2  ==  *pc3    *pc3  !=  NULL    *pc2  !=  NULL) 

 pc2++,  pc3++; [Page]

  /* 如果找到了子串,进行以下处理工作*/

 if(NULL  ==  *pc3) 

 { 

 pc3  =  rep; 

/*将替代串追加到结果串*/

 while(*pc3  !=  NULL) 

 *pc1++  =  *pc3++; 

 pc2--; 

 source  =  pc2; 

/* 检查 source与sub相等的循环结束后, 

* pc2 对应的位置是在 sub 中串结束符处。该是源串中下一个位置。 

* 将 source 指向其前面一个字符。 

***************************************************/

 } 

 else /*如果没找到子串,下面复制source所指的字节到结果串*/ 

 *pc1++ = *source; 

 source++; /* 将source向后移一个字符*/ 

 } 

 *pc1  =  NULL;

 return  result;

}

以下为测试代码:

int main()

{

  char s1[] ="abbccdfdcdbbdcd";

 char s2[]="dcd";

char s3[]="12345";

char *p = replace(s1,s2,s3);

printf("source=%s

",s1);

puts(s1);

  printf("sub = %s

",s2);

puts(s2);

  printf("replace string = %s",p);

return 0;

}


分享名称:c语言字符串函数替换子串,C语言字符串替换
URL链接:http://ybzwz.com/article/hsdjdo.html