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


    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) != '');//内循环,如果遇到,则循环结束
    21 
    22         *pnew = '';//字符串最后一个是
    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 }
  • 相关阅读:
    列表的内置方法
    oracle安装教程
    大二暑假假期周进度01
    win 10安装Linux虚拟机教程
    需求工程——软件建模与分析阅读笔记05
    网络爬虫阅读笔记01
    Java 测试连接Oracle数据库是否成功,ojdbc7.jar包下载
    河北创新年报统计平台系统整体界面展示,与数据下钻
    java 三大框架 struct2部分 实现增删该查操作
    itextsharp生成pdf
  • 原文地址:https://www.cnblogs.com/denggelin/p/5581086.html
Copyright © 2020-2023  润新知