29 删除字符串中的子串

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

输入格式:

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

输出格式:

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

输入样例:

Tomcat is a male ccatat
cat

输出样例:

Tom is a male 

#include <stdio.h>
#include <string.h>
 
int main(void)
{
	char s1[81]={0};
	char s2[81]={0};
	char temp[81]={0};
	
	gets(s1);//gets函数读取一行输入,直到遇到回车
	gets(s2);
	while(strstr(s1,s2)!=NULL){//strstr函数用于判断s1中是否含有s2子串
		int len1=strlen(s1);
		int len2=strlen(s2);
		strcpy(temp,strstr(s1,s2));
		int lentemp=strlen(temp);
		strcpy(s1+len1-lentemp,temp+len2);//计算出具体需要操作位置的起始与终止地址
	}
	puts(s1);
	
	return 0;
}

 


关于C语言处理各种字符数组的几个函数

strcpy:拷贝字符串

char *strcpy(char *Dest , const char *Src) //将src中的字符串拷贝到dest中,并且覆盖掉原来位置上的字符.


 strlen函数的意思是测试字符串的字符长度,不含字符串结束标志的。
sizeof是个运算符,它的结果是字符串在内存中的所占字节大小,它要把\0算进去的。


strcat函数:连接两个字符串

char *strcat(char *strDest, const char *strSrc)//作用是把src所指字符串添加到dest结尾处。


strcmp函数:比较两个字符串

int strcmp(const char* str1, const char* str2)

若str1==str2,则返回零;   若str1<str2,则返回负数;  若str1>str2,则返回正数。


 strstr函数:判断字符串str2是否是str1的子串

extern char *strstr(char *str1, const char *str2);//若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。


strchr函数:判断字符串中是否含有某一字符

char *strchr(char *str,char character);//从字符串str中寻找字符character第一次出现的位置,返回指向第一次出现字符character位置的指针,如果没找到则返回NULL。

#include<string.h>


strtok()函数:用来将字符串分割成一个个片段。

char * strtok(char *s, const char *delim);

参数s 指向欲分割的字符串,参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s 字符串,往后的调用则将参数s 设置成NULL。每次调用成功则返回下一个分割后的字符串指针。
返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL。


字符串函数总结:http://www.kuqin.com/clib/ 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值