zoukankan      html  css  js  c++  java
  • 网易云课堂_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 }
  • 相关阅读:
    mysql 数据类型学习笔记(持续更新)
    datetime 和 timestamp 的区别
    Jupyter notebook 常用快捷键(持续更新)
    遍历SnoMed的multiHierarchy中给定概念的子概念
    Ramdom Walk with Restart
    矩阵和向量
    power-law
    一些SQL操作(收集)
    MySQL5.7.19-win64安装启动
    OO_UNIT1_SUMMARY
  • 原文地址:https://www.cnblogs.com/denggelin/p/5581086.html
Copyright © 2011-2022 走看看