【说明】
本程序可以将字符串s1中出现的所有s2子串替换成s3,形成一个新串,但不破坏字符串s1。
【代码】
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*replace(char *s1, char *s2,char *s3)
char *p, *q, *r, *s; int |2,|3, i=0;
|2=strlen(s2);
|3=strlen(s3);
p=s1;
while((p=strstr(p,s2))!=NULL)
i++; /* 统计s2串出现的次数*/
(1) ;
i= (2) ;
s=r=(char*)malloc(i); /*分配动态内存存放新字符串*/
p=s1;
while(1)
q=strstr(p, s2); /* s2串是否在s1中出现,q是首次出现的位置*/
if(q!=NULL)
i=q-p;
(3) ;
r+=i;
(4) ;
r+=|3;
p=q+|2; /*将指向s1串的指针移到s2子串出现的位置后,
为下一次循环做好准备*/
else /*q为空,表示剩余的s1串中已经没有s2*/
(5) ;
break; /*终止循环*/
return(s);/*返回指向所形成的新串的指针*/
void main()
char *a="sabcababde", *b="ab", *c="efg", *d;
d=replace(a, b, c); printf("result=%s\n", d); free(d);