当前位置: 首页 > article >正文

pta 7-29 删除字符串中的子串 C语言

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

输入格式:

输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

输出格式:

在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

输入样例:

Tomcat is a male ccatat
cat

输出样例:

Tom is a male 

解析:

本来我想着搜个相对暴力的解法,因为本人大多数情况下都是暴力解法,尤其对于指针很不熟练,但是那个暴力解法实在是太绕了,还是吃点好的吧,学点指针吧姐,学学那十几行就能解出来的解法吧,于是我就扒到了这个解法,简直就是对吧太simple了,秒杀绝对是秒杀,我就是背我也要背下来!来展示

利用string.h库中的字符串函数解决

先来介绍要用到的字符串函数:

1、char *strstr( const char *str1, const char *str2 );

功能:返回字符串中首次出现子串的地址。若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL

2、char *strcpy( char *str1, const char *str2 );

功能:把从str2地址开始且含有NULL结束符的字符串复制到以str1开始的地址空间

3、char *strcat( char *str1, const char *str2 );

功能:把str2所指向的字符串(包括“\0”)复制到str1所指向的字符串后面(删除str1原来末尾的“\0”)。要保证str1足够长,以容纳被复制进来的*str2。

注意:以上两个函数(strcpy,strcat)中str1和str2所指内存区域不可以重叠且str1必须有足够的空间来容纳str2的字符串。因此代码中定义了一个临时数组。

 代码:
 

#include<stdio.h>
#include<string.h>
int main ()
{
	char s1[100];
	gets(s1);
	char s2[100];
	gets(s2);
	char t[100];//临时数组
	char *p;//用来存放strstr函数成功寻找后返回的地址 
	while((p=strstr(s1,s2))!=NULL)//若返回值不等于NULL,就开始删除操作
	{
		strcpy(t,p+strlen(s2));//p需要加上s2的长度来跳过被删除的子串,将之后的字符串拷贝至临时数组 
		*p='\0';//把p目前指向的字符变为'\0',用来下一步实现strcat函数 
		strcat(s1,t);//将临时数组接在s1的终止符之后(即p的位置) 
	}
	puts(s1);
	return 0;
}


http://www.kler.cn/a/273456.html

相关文章:

  • ES + SkyWalking + Spring Boot:日志分析与服务监控(三)
  • 嵌入式开发之文件I/O
  • 【初阶数据结构篇】链式结构二叉树(二叉链)的实现(感受递归暴力美学)
  • git入门教程12:git命令与技巧
  • 精准选型跨境客服,网页服务更高效
  • 海睿思产品体系二次开发能力介绍
  • java kafka客户端何时设置的kafka消费者默认值
  • Git 常用命令总结
  • 【Selenium(一)】
  • Java语言: 多线程
  • 信号处理--基于正则化聚合的共空间模态(CSP)脑电信号分类
  • 功能齐全的免费 IDE Visual Studio 2022 社区版
  • 基于yolov2深度学习网络的人脸检测matlab仿真,图像来自UMass数据集
  • const,static深度总结——c++穿透式分析
  • 统计-R(相关系数)与R^2(决定系数)
  • [数据集][目标检测]番茄成熟度检测数据集VOC+YOLO格式277张3类别
  • 机器人可反向驱动能力与力控架构
  • 蓝桥杯-python-递归
  • 算法练习第二十五天| 216.组合总和III、17.电话号码的字母组合
  • 云手机的数据安全有保障吗?
  • 信息系统项目管理师019:存储和数据库(2信息技术发展—2.1信息技术及其发展—2.1.3存储和数据库)
  • 语音识别:whisper部署服务器(远程访问,语音实时识别文字)
  • ElasticSearch文档操作[ES系列] - 第502篇
  • MyBatisPlus最实用教程
  • Tomcat(二)
  • 机器学习_聚类(k-means)