1
删除字符串中的子串(5分)
题目内容:
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
提示:输入数据的设计使得不可能出现输出为空的情况。
输入格式:
输入分别给出2个每个不超过80个字符长度的不带空格的非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Thisisatest is
输出样例:
Thatest
时间限制:500ms内存限制:32000kb
1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include <stdio.h> 4 #include <string.h> 5 6 char newstr[100] = { 0 };//全局变量,保存删除后的记录 7 8 void mydelete(const char *ps1, const char *ps2)//删除字符串中的子串,const可以禁止修改字符串,避免字符串被破坏 9 { 10 strcpy(newstr, ps1);//复制字符串,创建副本 11 char *pnew = NULL;//创建指针 12 int s2len = strlen(ps2);//字符串S2长度 13 14 while (pnew = strstr(newstr, ps2))//外循环,指针指向在函数结果,字符串newsstr中寻找字符数S2,如果找不到,返回NULL,则循环结束 15 { 16 do 17 { 18 *pnew = *(pnew + s2len);//跳过字符串S2,复制 19 pnew++;//指针移动 20 } while (*(pnew + s2len) != '