输入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/