⑴ 编写函数int replace_str(char *s,char *t,char *g),利用字符串处理函数将母串s中出现的所有子串t替换成子串g,返回替换的次数。 ⑵ 编写main函数,键盘输入母串s、子串t及子串g,调用replace_str函数替换,输出新串及替换次数。C语言
时间: 2024-02-15 08:05:29 浏览: 188
C语言写的一些字符串处理函数,包括连接,查找重复字符和获取字符串长度
5星 · 资源好评率100%
好的,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
int replace_str(char *s, char *t, char *g) {
int count = 0;
int t_len = strlen(t);
int g_len = strlen(g);
char *p = strstr(s, t); // 查找子串t在母串s中第一次出现的位置
while (p != NULL) {
count++;
int s_len = strlen(s);
int offset = p - s; // 计算子串t在母串s中的偏移量
char tmp[100];
strcpy(tmp, p + t_len); // 备份子串t后面的字符
strncpy(s + offset, g, g_len); // 替换子串t为子串g
strcpy(s + offset + g_len, tmp); // 恢复子串t后面的字符
p = strstr(s + offset + g_len, t); // 继续查找子串t在母串s中的位置
}
return count;
}
int main() {
char s[100], t[100], g[100];
printf("请输入母串s:");
scanf("%s", s);
printf("请输入子串t:");
scanf("%s", t);
printf("请输入子串g:");
scanf("%s", g);
int count = replace_str(s, t, g);
printf("替换后的新串为:%s\n", s);
printf("替换次数为:%d\n", count);
return 0;
}
```
程序中,我们使用了 `strstr` 函数查找子串 `t` 在母串 `s` 中第一次出现的位置,然后使用 `strcpy` 函数备份子串 `t` 后面的字符,使用 `strncpy` 函数将子串 `t` 替换为子串 `g`,最后使用 `strcpy` 函数将备份的字符恢复到子串 `g` 后面。这样就能够完成子串替换的操作了。
阅读全文