【编程小练习】删除字符串中的子串
来源:互联网 发布:mac office账号注销 编辑:程序博客网 时间:2024/05/16 08:09
题目内容:
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
提示:输入数据的设计使得不可能出现输出为空的情况。
输入格式:
输入分别给出2个每个不超过80个字符长度的不带空格的非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Thisisatest is
输出样例:
Thatest
思路:把输入字符串中第一次出现与子串相匹配的字符串删除,然后再次判断删除后的字符串中,是否存在与子串相同的字符串,如有相同,再次删除,直到没有相同的为止。
#include "stdio.h"#include "stdlib.h"#include "string.h"char * del(char *p1,char *sp1,char s2[],char result[]);int main(){ char s1[80]={"bbcbbccc"},s2[80]={"bc"}; //char s1[80]={"Thisisatest"},s2[80]={"is"}; /*char s1[80],s2[80]; printf("输入字符串s1,长度不超过80:"); scanf("%s",s1); printf("输入字符串s2,长度不超过80:"); scanf("%s",s2);*/ char *p1,result[80]={'\0'},*sp1; p1=s1; sp1=s1; for (int i=0;i<sizeof(s1);i++) result[i]=s1[i]; char temp[sizeof(result)]; while (strstr(result,s2)!=NULL) { for (int i=0;i<sizeof(result);i++) temp[i]=result[i]; result[0]='\0'; del(temp,temp,s2,result); } if (result[0]=='\0') printf("NULL"); else printf("%s",result); return 0;}char * del(char *p1,char *sp1,char s2[],char result[]){ while((p1=strstr(sp1,s2))!=NULL) { char c=*p1; *p1='\0'; strcat(result,sp1); *p1=c; for (int i=0;i<strlen(s2);i++) p1++; sp1=p1; } strcat(result,sp1); return result;}
程序中s1为bbcbbccc,s2为bc,第一次删除为bbbccc,第二次为bbcc,第三次为bc,最后输出为NULL。
0 0
- 【编程小练习】删除字符串中的子串
- 编程练习,寻找字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- c语言练习 10-2. 删除字符串中的子串(20)
- 删除字符串中所子串【编程】
- 删除字符串中的子字符串
- 删除字符串中的给定子串
- <记录>删除字符串中的子串
- 删除字符串中的子串(20)
- 删除字符串中的特定子串
- 删除指定字符串中的子串
- 10个顶级Web移动开发JavaScript框架
- 【转】C#的FTP上传函数问题
- Permission is only granted to system apps
- 第五章作业
- hdu 1075 What Are You Talking About 字典树(静态版)
- 【编程小练习】删除字符串中的子串
- Spring MVC 教程,快速入门,深入分析
- UESTC 838 —— 母仪天下(树状数组模板)
- POJ 1573 Robot Motion
- C++运算符重载(一)——加减
- Openstack I版 结合 Ceph 分布式存储 部署安装(一)
- 电子标签的芯片组成及其功能
- 网站热图生成工具 ClickHeat
- uva 11997(priority_queue)