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; } 运行结果如图:
|
|