码迷,mamicode.com
首页 > 编程语言 > 详细

网易云课堂_C语言程序设计进阶_第二周:指针:取地址运算和指针、使用指针、指针与数组、指针与函数、指针与const、指针运算、动态内存分配_1删除字符串中的子串

时间:2016-06-13 17:06:35      阅读:412      评论:0      收藏:0      [点我收藏+]

标签:

 

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) != \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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!