输入两个字符串str1和str2,判断str2是不是str1的子串,若是,请将str1中删除子串str2后的部分输出(C语言)

messi661 2020-02-23 12:11:22
输入两个字符串str1和str2,判断str2是不是str1的子串,若是,请将str1中删除子串str2后的部分输出(注意:若str1中含有多个str2子串,则只将str1中删除了最右边的子串后的部分输出)

c语言新手,自己把第一问写了,第二问(删除后的部分输出)想了半天没想出来,求大佬解答。
#include<stdio.h>
#include<string.h>
void main()
{
char s1[100];
char s2[100];
char s3[100];
int i,j,k,m,l1,l2;
printf("s1:\n");
gets(s1);
printf("s2:\n");
gets(s2);
strcpy(s3,s1);
l1=strlen(s1);
l2=strlen(s2);
k=0;
for(i=l1-l2;k==0&&i>=0;i--)
{
if(strcmp(&s3[i],s2)==0)
k=1;
s3[i+l2-1]='\0';
}
if(k)
printf("s2是s1的子串\n");
else
printf("s2不是s1的子串\n");
}

上面是第一问
...全文
2050 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40290083 2020-02-23
  • 打赏
  • 举报
回复 1
第二问的难点在于,如果str1中存在多个str2子串,删除的子串只是最右边的子串,其它的子串则不删除。这种情况下有两种解决办法 第一种:找出有多少个子串,并且找出最后子串的位置,然后再删除。 第二种:遍历str1的时候从后向前遍历,找到的第一个子串就是最右边的子串。
寻开心 2020-02-23
  • 打赏
  • 举报
回复
如同一楼说的,只要找到了str2在str1最后的位置, 分两次输出就好了
代码上,把strcmp函数换成strstr函数就可以了
strstr函数本来就是查找一个串在另外一个当中的位置,找到后返回子串所在位置的指针
for( j=l1-l2; j>=0; j--)
{
char * p = strstr(&s1[j], s2);
if ( p ) { // 找到了
*p = 0;
printf("%s", s1); // 输出s1的前半截
p+=l2;
printf("%s", p); // 输出s1的后半截
return 0;
}
}
printf(“Not found!”);
一星伴月 2020-02-23
  • 打赏
  • 举报
回复
把是子串的部分不输出不就行了,输出的部分就是删除完的
课程介绍:第一章:正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串取出符合某个条件的子串等。第二章:http协议是一种无状态协议,不记录用户行为,我们可以利用cookie记录数据,方便用户操作,提升用户体验。第三章:ECMAScript6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。第四章:本章主要讲解JS动画原理、动画函数封装和轮播。第五章:本章主要讲解面向对象、构造函数和继承、原型链和继承。第六章:本节课程主要讲解了什么是Ajax、如何使用Ajax发送get求、如何使用Ajax发送post求、JSON数据格式、回调地狱、Promise和Ajax的同源策略、跨域求。第七章:本章主要讲解html、val、attr、prop、class、全选框、动画、节点遍历、ajax、sonp、event、multiple、plugin、plugin、magnifier。第八章:本章主要讲解UML类图、单例模式、工厂模式、策略模式、代理模式、观察者模式。第九章:本章主要讲解为什么要模块化、原生JS,模块的写法、AMD、CommonJS&Webpack。第十章:本节课程主要讲解了服务器安装环境配置、端口及ip基本常识、简单认识PHP(helloworld)、基本语法和动态网页原理。第十一章:本节课程主要讲解了什么是SASS、SASS的预处理、ass语法(变量、嵌套、导入、mixin、扩展、function、expression)。第十二章:本节课程主要讲解了什么是GULP、GULP环境配置、GULP基本使用及GULP的插件安装与使用。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧