7-29 删除字符串中的子串
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例
Tomcat is a male ccatat
cat
输出样例
Tom is a male
分析与答案
需要动用到string.h
的一道题,用两个数组s1[81]
和s2[81]
来储存字符串和子串,然后用strstr
函数找到第一次出现子串的位置,将该位置的子串之后的字符先复制,然后将该位置后的内容删除(其实也就是将指针所指的位置内容改为结束符\0
),再将之前复制的字符连接到字符串里。重复上述动作,直到strstr
范围NULL
值。
#include <stdio.h>
#include <string.h>
int main(){
char s1[81]={'\0'},s2[81]={'\0'},tmp[81]={'\0'};
gets(s1);
gets(s2);
char *p = strstr(s1,s2);
while (p!=NULL)
{
strcpy(tmp,p+strlen(s2));
*p = '\0';
strcat(s1,tmp);
p = strstr(s1,s2);
}
printf("%s",s1);
return 0;
}