标签:
1
题目内容:
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
提示:输入数据的设计使得不可能出现输出为空的情况。
输入格式:
输入分别给出2个每个不超过80个字符长度的不带空格的非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Thisisatest is
输出样例:
Thatest
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) != ‘\0‘);//内循环,如果遇到\0,则循环结束 21 22 *pnew = ‘\0‘;//字符串最后一个是\0 23 } 24 } 25 26 main() 27 { 28 char str1[100]; 29 char str2[100]; 30 31 scanf("%s %s", str1, str2);//输入 32 33 mydelete(str1, str2);//删除字符串中的子串 34 35 puts(newstr);//输出 36 }
网易云课堂_C语言程序设计进阶_第二周:指针:取地址运算和指针、使用指针、指针与数组、指针与函数、指针与const、指针运算、动态内存分配_1删除字符串中的子串
标签:
原文地址:http://www.cnblogs.com/denggelin/p/5581086.html