题目详情
题目的意思比较直白,就是删除字符串中固定的一个子串,最后输出修改后的字符串。
思路分析
这道题目是对字符串的考察,首先我们要找到题目所给的子串,我不知道其他同学是自己写函数来判断,还是用其他的方法,在这里我提供我的一个思路,利用库函数strstr来找,不知道strstr怎么用的同学可以移步链接https://legacy.cplusplus.com/reference/cstring/strstr/?kw=strstr
顺便也推荐这个网站给大家,cplusplus里面是c与c++中各种函数的用法以及头文件,可以自行学习。
把strstr贴给大家
一次操作
运用strstr我们可以快速的找到一个字符串是否在另一个字符串中,如果在的话就可以直接拿到第一次出现的位置的地址。
然后,我们就可以把字符串后面的东西覆盖到子串出现的位置。
循环
但是子串出现的次数很可能不是一遍,那么怎么去实现不断地查找然后覆盖呢。
循环不就好了。
那么循环的条件就是我们strstr拿到的指针不为NULL(这个应该很容易理解)
代码实现
#define _CRT_SECURE_NO_WARNINGS 1
//********** Begin **********
#include<stdio.h>
#include<string.h>
int main()
{
//读取数据
char t[1005] = { 0 };
char s[1005] = { 0 };
gets(t);
gets(s);
//第一次查找
char* p = strstr(t, s);
int len = strlen(s);
int len2 = strlen(t);
while (p != NULL)
{
char* m = p + len;//这是子串后面第一个字符
int i;
for (i = 0; *(m + i) != 0; i++)
{
*(p + i) = *(m + i);
}
*(p + i) = *(m + i);//把'\0'移到到末尾(此时字符串长度变小)
p = strstr(t, s);//再次查找
}
printf("%s\n", t);
return 0;
}
//********** End ********** 1
如果这篇博客对你有帮助,请不要吝啬免费的赞、关注、还有收藏。
蟹蟹啦!