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*。

posted @ 2018-12-13 17:15  ZhouWei211  阅读(141)  评论(0编辑  收藏  举报