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 }