文章目录

  • 题目描述
  • 题目提示
  • 参考代码
    • 1. 一次替换
    • 2. 全部替换
    • 完整代码

题目描述

  1. 编写函数void reOnce(char src[], char obj[], char sub[]),函数功能是用sub字符串替换长串src内第一次出现的obj子串。

  2. 编写函数void repAll(char src[], char obj[], char sub[]),函数功能是用sub字符串替换长串src内出现所有的obj子串。

void repOnce(char src[], char obj[], char sub[]);
void repAll(char src[], char obj[], char sub[]);

原始代码:

#include <iostream>
#include <cstring>
using namespace std;
void repOnce(char src[], char obj[], char sub[]);
void repAll(char src[], char obj[], char sub[]);int main(){char c[100],obj[100],sub[100];cout << "依次输入src,obj,sub:"<<endl;cin.getline(c,100);cin.getline(obj,100);cin.getline(sub,100);repOnce(c, obj, sub);cout << c << endl;cout << "依次输入src,obj,sub:"<<endl;cin.getline(c,100);cin.getline(obj,100);cin.getline(sub,100);repAll(c, obj, sub);cout << c << endl;return 0;
}void repOnce(char src[], char obj[], char sub[]){/*--------Your Code Here--------*/
}void repAll(char src[], char obj[], char sub[]){/*--------Your Code Here--------*/
}

题目提示

cin.getline允许读取包含空格的字符串。它将持续读取,直到它读取至最大指定的字符数,或直到按下了回车键。

可使用库函数strcpy strcmp strncpy strncmp strstr等。

strcpy函数:strcpy(char ds[], char ss[]),作用是把ss字符串复制给ds指向的内存区域。

strncmp函数:int strncmp (char ds[], char ss[], int len),作用是比较ds串和ss串中的前面len个字符,如果相同返回0,如果ds<ss,返回-1,否则返回1。

strncpy函数:strncpy(char ds[], char ss[], int len),作用是把ss中的前len个字符复制到ds指向的内存区域。

strstr函数:char *strstr(const char *s, const char *needle) 在字符串s中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。
该函数返回在s中第一次出现 needle 字符串的位置,如果未找到则返回 null。

参考代码

1. 一次替换

void repOnce(char src[], char obj[], char sub[]){char *p = strstr(src, obj);char tail[100];strcpy(tail,p+strlen(obj));strcpy(p,sub);strcpy(p+strlen(sub), tail);
}

2. 全部替换

解法一

void repAll(char src[], char obj[], char sub[]){while(strstr(src,obj)) repOnce(src,obj,sub);
}

解法二

void repAll(char src[], char obj[], char sub[]){//while(strstr(src,obj)) repOnce(src,obj,sub);char *p = src;char target[100], *q = target;while(*p!='\0'){if(strncmp(p, obj, strlen(obj))==0){strcpy(q,sub);p += strlen(obj);q += strlen(sub);}else*q++ = *p++;}*q = '\0';strcpy(src,target);
}

完整代码

#include <iostream>
#include <cstring>
using namespace std;
void repOnce(char src[], char obj[], char sub[]);
void repAll(char src[], char obj[], char sub[]);int main(){char c[100],obj[100],sub[100];cout << "依次输入src,obj,sub:"<<endl;cin.getline(c,100);cin.getline(obj,100);cin.getline(sub,100);repOnce(c, obj, sub);cout << c << endl;cout << "依次输入src,obj,sub:"<<endl;cin.getline(c,100);cin.getline(obj,100);cin.getline(sub,100);repAll(c, obj, sub);cout << c << endl;return 0;
}void repOnce(char src[], char obj[], char sub[]){char *p = strstr(src, obj);char tail[100];strcpy(tail,p+strlen(obj));strcpy(p,sub);strcpy(p+strlen(sub), tail);
}void repAll(char src[], char obj[], char sub[]){while(strstr(src,obj)) repOnce(src,obj,sub);
}

【C++编程题】字符串子串替换相关推荐

  1. 牛客网编程题——字符串_空格替换

    题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字 ...

  2. [编程题]字符串最后一个单词的长度

    输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 代码说明: import java.util.*;pub ...

  3. 2016去哪儿编程题:字符替换

    字符串替换 题目描述 请你实现一个简单的字符串替换函数.原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符.若参数列表的字符数大于占位符个数.则将剩下的参数字符添 ...

  4. 【C语言进阶】指针编程题—字符串翻转

    目录 写在前面 正文 练习一:左旋字符串 练习二:字符串旋转异同判断 练习三:杨氏矩阵 写在最后 写在前面 这是有关指针的大题 正文 练习一:左旋字符串 题目要求:实现一个函数,可以左旋字符串中的K个 ...

  5. 牛客网编程题——字符串_确定两串乱序同构

    题目描述 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串中的空格. 给定一个string stringA和一个string ...

  6. python笑傲江湖统计字数_python编程题----字符串的处理(统计)

    <射雕英雄传>是金庸的重要武侠作品之一.这里给出一个<射雕英雄传>的网络版本,文件名为"射雕英雄传-网络版.txt". ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬ ...

  7. python编程题----字符串的处理(统计)

    <射雕英雄传>是金庸的重要武侠作品之一.这里给出一个<射雕英雄传>的网络版本,文件名为"射雕英雄传-网络版.txt". ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬ ...

  8. 网易2018校园招聘编程题真题集合

    1/8 [编程题]魔法币 #include<bits/stdc++.h> using namespace std; #define clr(a) memset(a, 0, sizeof(a ...

  9. 网易2018校园招聘编程题

    [编程题] 魔法币 时间限制:1秒 空间限制:32768K 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0) ...

最新文章

  1. 张仰彪第二排序法_C语言中的最常用的两种排序算法你知道吗?
  2. CentOS内核编译
  3. c++判断正在使用的显卡_7°C警告:廉价硅脂害死显卡系列!还在用¥5块钱一大碗的导热膏吗...
  4. 不要打2岁内和6岁后的孩子 父母必看
  5. 51单片机——SPI
  6. Scanner进阶详细讲解
  7. 2022电工杯数学建模A题目思路总结分享
  8. 电视hdr测试软件,HDR是什么意思 如何打开电视机的HDR10模式
  9. 2020.10.1--PS--画笔色彩模式、画笔预设、自定义画笔
  10. python学习笔记六
  11. Eureka自我保护机制原理及作用enable-self-preservation
  12. 机械设备维修报修小程序开发制作功能介绍
  13. 【C语言】打印二叉树树形(制表符实现,清晰+高拓展)(2022-10-22 更新—偏移量说明)
  14. 在你们眼中,杭州和苏州都是江南名城,有什么区别?
  15. 仿造虎扑步行街首页。
  16. 邦纳超声波传感器T30UXDA
  17. Ueditor上传图片文件大小上限问题
  18. 未能加载文件或程序集 Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken= 1cee9f8bde3db106或它的某
  19. vue控制台报错Duplicate keys detected:‘xxxx‘.This may canse an update error
  20. 大疆文档(8)-Android教程-模拟器App

热门文章

  1. x86 Kylin V10系统安装kvm并创建虚拟机
  2. Matlab代码书写规范
  3. 【无标题】体验scratch海底世界
  4. 番茄社区多门店系统介绍
  5. Ubuntu16.04编译roc-rk3328-cc
  6. (转)知乎作者邓文龙:Kensho是做什么的?
  7. 安装CentOS 时找不到硬盘( no usable disks have been found)的解决方法
  8. 藏书阁(非技术流书籍)
  9. 【Blender-Python】蜡笔画圆球动画
  10. 六则励志故事,送给程序员的你,希望从中获得启发与帮助!