先构造一个子串的删除函数(一次只删除一个):
#include<iostream>
#include<cstring>
using namespace std;
void del(char s[],char m[]){
int we=strlen(m)+1;
for(int i=0;i<strlen(m)-strlen(s);i++){
if(m[i]==s[0]){
bool flag=true;
int e=i+1;
for(int j=1;j<strlen(s);j++){
if(m[e++]!=s[j]){flag=false;break;
}
}
if(flag){
we=i;break;
}
}
}
for(int i=0;i+strlen(s)<strlen(m);i++){
if(i>=we) m[i]=m[i+strlen(s)];
}
m[strlen(m)-strlen(s)]='\0';
}
int main(){
char a[90],b[90];
cin.getline(a,90);
cin.getline(b,90);
while(strstr(a,b)) del(b,a);
cout<<a<<endl;
return 0;
}
强调一下 cstring 头文件中的 strstr 函数,注意第一个参数是母串,第二个是子串,我一开始就用反了~