[原创]替换子串
题目:将子串str中第一次出现的str1子串替换成str2。形成一个新的str。#include<stdio.h>
#include<string.h>
main()
{ char str[100],str1[10],str2[10];
int len,len1,len2,i,j,k=-1,n,flag=0,tag;
printf("please input str1:\n");
gets(str);
len=strlen(str);
printf("please input str2:\n");
fflush(stdin);
gets(str1);
len1=strlen(str1);
printf("please input str3:\n");
fflush(stdin);
gets(str2);
len2=strlen(str2);
for(i=0,j=0;i<len;)
{if(str[i]==str1[j])
{ i++;
j++;
if(j==len1)
{ k=i-j;
break;
}
}
else
{ i=i-j+1;
j=0;
}
}
k=i-j; //k指向删除字符串的下标
for(i=k;i<len1+k;i++) //删除子串
str[i]=str[i+len1];
len-=len1;
str[len]='\0';
for(i=len-1;i>=k;i--) //为插入子串str2做准备
str[len2+i]=str[i];
for(i=0;i<len2;i++) //插入子串str2
str[i+k]=str2[i];
len+=len2;
str[len]='\0';
for(i=0;i<len;i++)
printf("%c",str[i]);
printf("\n");
}
本来要写str中所有出现的str1子串替换成str2子串的。写了一个通宵都是写不出。写到已经麻木了~~~~~~~~