输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Tomcat is a male ccatatcat
输出样例:
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
