.编写程序task31.c,输入两个字符串s1、s2,将s1中所有s2子串删去后输出。如若输入s1=“This is my mother university”,s2=“er”,则输出为”This is my moth univsity 在虚拟机中完成
时间: 2024-10-12 22:08:33 浏览: 33
在`task31.c`程序中,你可以使用C语言中的字符串处理函数来实现这个功能。这里是一个简单的示例,我们将使用循环遍历和指针来逐字符检查和替换子串:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,用于删除字符串s1中的s2子串
void remove_substring(char *str, char *substr);
int main() {
char s1[100], s2[10];
printf("请输入第一个字符串s1:");
fgets(s1, sizeof(s1), stdin); // 使用fgets防止换行符
s1[strlen(s1) - 1] = '\0'; // 去除fgets添加的换行符
printf("请输入第二个字符串s2:");
fgets(s2, sizeof(s2), stdin);
s2[strlen(s2) - 1] = '\0';
remove_substring(s1, s2);
printf("删除了%s子串后的结果是:%s\n", s2, s1);
return 0;
}
// 实现remove_substring函数
void remove_substring(char *str, char *substr) {
int i, j;
for (i = 0; str[i] != '\0'; i++) { // 遍历str
if (strstr(str + i, substr)) { // 查找substr在str中的起始位置
j = i;
while (strstr(str + j, substr) != NULL) { // 当找到一个子串时,跳过它
j += strlen(substr);
}
memmove(str + j, str + j + strlen(substr), strlen(str) - j); // 移动剩余部分到空出的位置
}
}
}
阅读全文