28.替换字符串(有点错误)
#include<stdio.h>
int w=0;
int count(char*str);
int search(char*str1,char*str);
char*replaceAll(char*str1,char*str2,char*str3);
main()
{
char*str1=NULL,*str2=NULL,*str3=NULL;
printf("请输入源字符串:");
gets(&str1);
printf("请输入要被替换的字符串:");
scanf("%s",&str2);
printf("请输入替换目标字符串:");
scanf("%s",&str3);
printf("替换后的字符串是:");
// printf("%s",*replaceAll(*str1,*str2,*str3));
*replaceAll(*str1,*str2,*str3);
puts(&str1);
return(0);
}
int count(char*str)
{
int i=0;
while(*(str+i)!='\n')
i=i+1;
return i;
}
int search(char*str1,char*str2)
{
int i, j,num=0;
for(i=0;i<=count(*str1)-1;i++)
if(*(str1+i)==*str2)
{
for(j=1;j<=count(*str2)-1;j++)
{
if(*(str1+i+j)==*(str2+j))
num=num+1;
}
if(num==count(*str2)-1)
{
w=i;
return 1;
}
}
return 0;
}
char*replaceAll(char*str1,char*str2,char*str3)
{
int i,j,k;
j=count(*str2);
k=count(*str3);
if(search(*str1,*str2)==1)
{
for(i=w;i<=w+j-1;i++)
*(str1+i)=*(str1+i+j);
for(i=w+k*2-1;i>=w+k;i--)
*(str1+i)=*(str1+i-k);
for(i=0;i<=k-1;i++)
*(str1+i+w)=*(str3+i);
}
return *str1;
}
联系客服