10-2. 删除字符串中的子串(20)

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

输入格式:

输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

输出格式:

在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

输入样例:

Tomcat is a male ccatat
cat

输出样例:

Tom is a male 

 

 

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define N 80
 4 
 5 void del_str(char *str, char *s, char *resultstr)   //删除函数 
 6 {
 7     int i, j, resultstr_len, s_len;                 //resultstr_len为resultstr字符串的长度,s_str为s字符串的长度 
 8     s_len = strlen(s);
 9     strcpy(resultstr, str);                         //将str拷贝到resultstr 
10     char *p;                                         
11     p = strstr(resultstr, s);                       //p指向s在resultstr中出项的首字符 
12     resultstr_len = strlen(resultstr);
13 
14     while(p != NULL) {                             
15         for(i = p - resultstr; i < resultstr_len - s_len + 1; i++) {   
16             resultstr[i] = resultstr[i + s_len];
17         } 
18         resultstr_len = strlen(resultstr);
19         p = strstr(resultstr, s);
20     }
21 }
22 
23 int main()
24 {
25     char str[N+1], s[N+1], resultstr[N+1];     //str为第一个字符串,s为第二个字符串,resultstr为删除后的字符串 
26     gets(str);
27     gets(s);
28     del_str(str, s, resultstr);                //删除函数 
29     printf("%s\n", resultstr);
30     
31     return 0;
32 }

 

posted @ 2014-08-04 14:49  Acalm  阅读(3408)  评论(0编辑  收藏  举报