浙江大学陈越pta答案删除字符串中的子串
时间: 2025-04-06 08:13:39 浏览: 45
### 关于删除字符串中的子串
在处理字符串操作时,可以利用C语言的标准库函数或者自定义逻辑来实现删除指定子串的功能。以下是基于PTA平台可能的需求设计的一个解决方案。
#### 自定义函数实现删除子串功能
为了满足需求,在给定的字符串中查找并删除目标子串,可以通过遍历源字符串的方式完成此任务。下面是一个完整的代码示例:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
void removeSubstring(char *str, const char *sub);
int main() {
char str[100], sub[50];
printf("请输入原字符串:\n");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 去掉输入中的换行符
printf("请输入要删除的子串:\n");
scanf("%s", sub); // 输入子串
removeSubstring(str, sub);
printf("修改后的字符串为:%s\n", str);
return 0;
}
// 定义removeSubstring函数
void removeSubstring(char *str, const char *sub) {
int lenSub = strlen(sub);
if (lenSub == 0) return; // 子串为空则无需处理
char* pos = strstr(str, sub); // 查找第一次出现的位置
while (pos != NULL) { // 如果找到匹配项
memmove(pos, pos + lenSub, strlen(pos + lenSub) + 1); // 移动后续部分覆盖子串
pos = strstr(pos, sub); // 继续查找下一个位置
}
}
```
上述程序实现了从用户输入的一段文字中移除所有指定子串的操作[^3]。这里的关键在于使用`strstr()`定位到第一个匹配的目标子串地址,并通过内存移动(`memmove`)将其之后的内容向前挪动以填补被删去的部分。
#### 字符串清理方法补充说明
对于额外提到的方法如`strip()`、`rstrip()`以及`lstrip()`,它们主要用于去除空白字符或其他预设集合内的字符位于字符串开头或结尾处的情况[^1]。这些属于Python内置字符串方法范畴而非C/C++标准库支持范围之内。如果希望模拟类似行为,则需自行编写相应辅助工具函数。
---
阅读全文
相关推荐


















