输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:Tomcat is a male ccatat cat输出样例:
Tom is a male
程序:
#include #include #define STRING_SIZE 80 void delete_substr(const char *str, const char *substr, char *resultstr) { int i, j, substrlen, resultstrlen; char *p; substrlen = strlen(substr); strcpy(resultstr, str); resultstrlen = strlen(resultstr); // 寻找子串 p = strstr(resultstr, substr); while(p != NULL) { /* 删除子串 */ for(i = 0; i < substrlen; ++i) { /* 左移删除1个字符 */ for(j = (p - resultstr) + substrlen - i; j < resultstrlen; ++j) resultstr[j - 1] = resultstr[j]; // 删除1个字符后,长度减1 --resultstrlen; resultstr[resultstrlen] = '\0'; } // 继续寻找子串 p = strstr(resultstr, substr); } } int main(void) { char str[STRING_SIZE + 1], substr[STRING_SIZE + 1], resultstr[STRING_SIZE + 1]; gets(str); gets(substr); delete_substr(str, substr, resultstr); printf("%s\n", resultstr); return 0; }