2018/12/13
7-29 删除字符串中的子串 (20 分)
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male
8. 代码块
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[81];
char b[81];
gets(a);
gets(b);
char *p;
char c[81];
while((p=strstr(a,b)) != NULL) //strstr 找不到返回 NULL
{
*p = '\0'; // 指定连接下一步(连接函数)之前 a 的终止位置;
strcpy (c, p+strlen(b)); // strcat函数中的两个传入参数的内存地址不能重叠,所以这里用 c 当作 temp
strcat (a, c);
}
puts(a);
return 0;
}
>有关strstr函数:
函数原型:
extern char *strstr(char *str1, const char *str2);语法:
* strstr(str1,str2)
str1: 被查找目标 string expression to search.
str2: 要查找对象 The string expression to find.返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。
例子:
char str[]="1234xyz";
char *str1=strstr(str,"34");
cout << str1 << endl;显示的是: 34xyz
>有关strcat函数:
函数原型
extern char *strcat(char *dest, const char *src);将两个char类型连接。
char d[20]="GoldenGlobal"; char *s="View"; strcat(d,s);
结果放在d中
printf("%s",d);
输出 d 为 GoldenGlobalView (中间无空格)
d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。
返回指向d的指针。
>有关strcpy函数
原型声明:
char strcpy(char dest, const char *src);strcpy是一种C语言的标准库函数,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。