C语言编程从键盘输入两个字符串str和sub,其中str为主串,sub为子串,编一程序删除主串str中包含的所有子串sub。如:char str[]="ab123cd123", sub[]=“123”;则删除子串后str为"abc d”。
时间: 2024-05-03 15:20:11 浏览: 25
好的,您的问题是关于C语言编程的字符串处理操作。为了删除主串中所有包含子串的部分,我们可以使用字符串匹配算法。以下是一种C语言实现的方法:
```
#include <stdio.h>
#include <string.h>
void removeSubstring(char *str, char *sub) {
int i, j, k, n = strlen(sub);
for (i = j = 0; str[i]; i++) {
if (strncmp(str + i, sub, n) == 0) {
i += n - 1;
} else {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[] = "ab123cd123", sub[] = "123";
removeSubstring(str, sub);
printf("%s\n", str);
return 0;
}
```
这个程序定义了一个函数`removeSubstring`,接受两个指向字符串的指针参数。它使用了一个循环来遍历主串中的每一个字符,检查是否有子串与当前位置匹配。如果匹配成功,那么就直接跳过子串,否则将当前字符复制到新的位置中。最后在新位置末尾添加一个空字符,以便打印整个处理后的字符串。注意,这个程序没有修改原主串的内容,而是在一个新的字符串中生成了结果。