输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male
#include<stdio.h>
#include<string.h>
int main(){
char s1[100];
gets(s1);
char s2[100];
gets(s2);
int len1, len2;
len1 = strlen(s1);
len2 = strlen(s2);
//串的模式匹配
int i, j, k;
int flag = 1;//标志是否修改
int mod;//对照位
while(flag){
for(i=0; i<len1; i++){
flag = 0;
if(s1[i]==s2[0]){
mod = 1;
for(j=i,k=0; k<len2; j++,k++){
if(s1[j]!=s2[k]){
mod = 0;//不同,跳出匹配
break;
}
}
if(mod){//匹配成功,j=i+len2 进行删除操作
for(; j<len1; i++,j++){//这里的i、j非常好
s1[i]=s1[j];
}
for(; i<len1; i++){
s1[i]='\0';
}
flag = 1;//存在符合要求的子串,重新扫描
break;
}
}
}
}
puts(s1);
return 0;
}
//得复习一下数组和串
//帮助很大 https://blog.csdn.net/u011779517/article/details/103366593