【问题描述】 将字符串str中的子字符串s1替换成新的子字符串s2(字符串长度<100),如果字符串str中有多个s1,则应全部替换,最后输出被替换后的str字符串。 【输入形式】 输入3行,第一行是:字符串,第二行是:被替换子串,第三行是:替换子串 【输出形式】 替换后的字符串用C语言
时间: 2023-07-20 08:46:16 浏览: 328
以下是基于C语言的程序实现,可以实现将字符串中的子字符串替换为新的子字符串。
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char s1[100];
char s2[100];
printf("请输入一个字符串:");
scanf("%s", str);
printf("请输入被替换子串:");
scanf("%s", s1);
printf("请输入替换子串:");
scanf("%s", s2);
int s1_len = strlen(s1);
int s2_len = strlen(s2);
for (int i = 0; i < strlen(str); i++) {
if (strncmp(str + i, s1, s1_len) == 0) {
char temp[100];
strncpy(temp, str, i);
temp[i] = '\0';
strcat(temp, s2);
strcat(temp, str + i + s1_len);
strcpy(str, temp);
i += s2_len - 1;
}
}
printf("替换后的字符串为:%s\n", str);
return 0;
}
```
程序中使用了三个字符数组 `str`、`s1`、`s2` 分别存储输入的字符串、被替换子串和替换子串。程序通过遍历字符串 `str` 的每个字符,判断该字符是否与被替换子串 `s1` 相等,如果相等,则使用 `strncpy` 函数将字符串 `str` 中前面的部分与替换子串 `s2` 和后面的部分拼接起来,形成新的字符串,并将其存储到字符数组 `temp` 中,最后使用 `strcpy` 函数将字符数组 `temp` 中的字符串复制到字符数组 `str` 中。由于替换子串 `s2` 长度可能不同于被替换子串 `s1` 的长度,所以在遍历过程中需要根据两者长度的差值来更新遍历的下标。
需要注意的是,由于在遍历过程中修改了字符串 `str` 的内容,所以不能使用 `for` 循环的方式遍历 `str` 的每个字符。可以先将字符串 `str` 复制到字符数组 `temp` 中,然后遍历字符数组 `temp`,最后将字符数组 `temp` 中的字符串复制回字符串 `str` 中。
阅读全文