//实现字符串的查找、删除、替换 # include<stdio.h> # include<string.h> //字符串的查找 int find(char *str1,char *str2)//在str1中寻找str2 { int len1=strlen(str1); int len2=strlen(str2); int i=0,index; if(len1<len2) return -1;//查找失败 else { index=0; for(i=0;i<len1;i++) { if(str1[i]==str2[index]) { index++; if(index==len2) return i-len2+1;//返回第一次碰到str2的索引 } else { index=0; } } return -1; } } //字符串的删除 char* delet(char* str,int start,int step)//在str1中删除从start到start+step的子串 { int len=strlen(str); int i=0; if(len<start+step) return NULL;//char *返回值NULL else { for(i=start;i<len-step;i++) { str[i]=str[i+step]; } str[len-step]='\0';//末尾补0,补全新的字符串 return str; } } //字符串的替换 char *replace(char *str1,int start,char *str2) { int len1=strlen(str1); int len2=strlen(str2); int i=0,index=0; if(len1<start+len2) return NULL; else { for(i=start;i<start+len2;i++) { str1[i]=str2[index++]; } str1[len1]='\0'; return str1; } } int main() { char str1[40]; char str2[40]; //删除重复子串 while(scanf("%s%s",str1,str2)!=EOF) { int t=find(str1,str2); // printf("%d\n",t); while(t!=-1) { //删除 char *p=delet(str1,t,strlen(str2)); t=find(p,str2); } printf("%s\n",str1); } return 0; }