C语言编程从键盘输入两个字符串str和sub,其中str为主串,sub为子串,编一程序删除主串str中包含的所有子串sub。如:char str[]="ab123cd123", sub[]=“123”;则删除子串后str为"abc d”。
时间: 2024-05-03 10:20:11 浏览: 108
好的,您的问题是关于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`,接受两个指向字符串的指针参数。它使用了一个循环来遍历主串中的每一个字符,检查是否有子串与当前位置匹配。如果匹配成功,那么就直接跳过子串,否则将当前字符复制到新的位置中。最后在新位置末尾添加一个空字符,以便打印整个处理后的字符串。注意,这个程序没有修改原主串的内容,而是在一个新的字符串中生成了结果。
相关问题
c语言 从键盘输入两个字符串,将它们连接成一个字符串。
可以使用C语言中的字符串函数`strcat()`来将两个字符串连接成一个字符串,示例代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
printf("请输入第一个字符串:");
gets(str1); // 从键盘读取字符串1
printf("请输入第二个字符串:");
gets(str2); // 从键盘读取字符串2
strcat(str1, str2); // 将字符串2连接到字符串1的末尾
printf("连接后的字符串为:%s\n", str1);
return 0;
}
```
代码中使用了`gets()`函数从键盘读取输入的两个字符串,然后使用`strcat()`函数将两个字符串连接成一个字符串,最后输出连接后的字符串。需要注意的是,使用`gets()`函数存在安全隐患,建议使用`fgets()`函数代替。
C语言从键盘上输入2个字符串,将这两个字符串连接,输出链接后字符串
可以使用C语言中的字符串函数来实现字符串的连接。以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100], str2[100];
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
strcat(str1, str2); // 将str2连接到str1的末尾
printf("连接后的字符串为:%s\n", str1);
return 0;
}
```
在上面的代码中,我们使用了 `strcat()` 函数将第二个字符串连接到第一个字符串的末尾,并输出连接后的字符串。需要注意的是,使用 `strcat()` 函数时要确保第一个字符串有足够的空间来容纳两个字符串的内容,否则会导致程序崩溃。
阅读全文