】字符串删除操作,将第一行字符串中包含第二行字符串的子串全部删除。 【输入形式】两行,第一行一个字符串,第二行一个字符串 【输出形式】一行:删除子串后的字符串 【样例输入】用C语言实现此操作并给出完整代码
时间: 2024-11-01 16:07:26 浏览: 18
输出一个字符串的全部子串.docx
在C语言中,可以使用`strstr()`函数来查找子串,并结合`strcpy()`和`strlen()`函数来实现删除操作。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
// 定义一个函数,接收两个字符串作为参数
char* removeSubstring(char* str, char* substr) {
size_t lenStr = strlen(str);
size_t lenSubstr = strlen(substr);
// 遍历原字符串,查找子串的位置
for (size_t i = 0; i <= lenStr - lenSubstr; i++) {
if (strcmp(str + i, substr) == 0) { // 如果找到子串
// 计算从当前位置到子串末尾的字符数
size_t j = i + lenSubstr;
// 使用内存移动技术删除子串
memmove(str + i, str + i + lenSubstr, lenStr - j);
lenStr -= lenSubstr; // 更新字符串长度
}
}
// 返回更新后的字符串,注意最后需要加上'\0'以表示字符串结束
return str;
}
int main() {
char str[100], substr[100];
printf("请输入第一行字符串: ");
fgets(str, sizeof(str), stdin); // 注意处理换行符
str[strlen(str) - 1] = '\0'; // 去除fgets的多余换行符
printf("请输入第二行字符串: ");
fgets(substr, sizeof(substr), stdin);
substr[strlen(substr) - 1] = '\0'; // 同样去除换行符
str = removeSubstring(str, substr);
printf("删除子串后的字符串: %s\n", str);
return 0;
}
```
阅读全文