#include<iostream>
#include<string>
using namespace std;
int main()
{
string a(81, '\0'), b(81, '\0');
int i;
getline(cin, a, '\n');
getline(cin, b, '\n');
while ((i = a.find(b)) != string::npos)
a.replace(i, b.size(), "");
cout << a;
return 0;
}
转自http://www.biggod.top/post/82.html,很不错。
------------------------------分割线----------------------------
#include <stdio.h>
char s1[80]={""};
char s2[80]={""};
int main()
{
int i,j;
int m=0;//s1共输入m个字符
int n=0;//s2共输入n个字符
int comp=0;//用于标记是否重复
int a,b;
int c;
for(i=0;;i++){
scanf("%c",&s1[i]);
if(s1[i]=='\n'){
break;
}
m++;
}
for(j=0;;j++){
scanf("%c",&s2[j]);
if(s2[j]=='\n'){
break;
}
n++;
}
for(a=0;a<m;a++){
if(s1[a]==s2[0]){
comp=1;
}
for(b=0;b<=n-1;b++){
if(s1[a+b]!=s2[b]){
comp=0;
}
}
if(comp==1){
m=m-n;
for(c=a;c<m;c++){
s1[c]=s1[c+n];
}
a=-1;//此处a=-1而不是0,防止s1数组初始位置开始即与s2重合
s1[m]='\0';
comp=0;
}
}
for(int i=0;i<m;i++){
printf("%c",s1[i]);
}
}
以上代码也可以测试通过。