例如:str1=“abcdabac”,str2=“ab”,str3=“xyz”,计算结果:str1=“xyzcdxyzac”。注意,替换过程中新产生的str2不可以被替换。
#include<stdio.h>
#include<string.h>
char *replace(char *str1,char *str2,char *str3) //char*类型函数,其参数均设置为char*
{
int i=0;
char *p;
char temp[80];
puts("输入字符串1:");
gets(str1);
puts("输入字符串2:");
gets(str2);
puts("输入字符串3:");
gets(str3);
i=strlen(str2); //被替换子串的长度
/*strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。
如果是,则该函数返回 str2第一次出现的位置;否则,返回NULL */
while(p=strstr(str1,str2)) //p记录断点位置
{
*p='\0'; //因为strcat是从第一个'\0'开始连接
strcpy(temp,p+i); //把断点之后的内容存入temp,当然不包括str2,因此加i
strcat(str1,str3);
strcat(str1,temp);
}
return str1;
}
int main()
{
char str1[80];
char str2[80];
char str3[80];
printf("%s",replace(str1,str2,str3));
return 0;
}