依次读入3个非空字符串:字符串1、字符串2、字符串3,输入的3个字符串最大长度不超过100,且字符串3的长度至少比字符串2的长度少1。
然后在字符串1中搜索是否有子串与字符串2相等,如果相等,则用字符串3替换字符串1中该子串部分。
重复上述搜索与替换过程,直到字符串1中不存在子串与字符串2相等。
输入格式:
输入3个用空格分隔的字符串。
输出格式:
被替换后的字符串1的内容。
输入样例1:
aabcd abc ef
输出样例1:
aefd
输入样例2:
aabcc abc b
输出样例2:
b
以上是题目
我目前只能做出样1的答案
尝试用函数来解决样2失败
想看看大家如何解决
搜索字符串并替换(重复使用)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 灬烟花易冷灬 2023-04-19 15:46关注
#include <stdio.h> #include <string.h> int main() { char s1[101], s2[101], s3[101]; scanf("%s %s %s", s1, s2, s3); while (strstr(s1, s2) != NULL) { // 查找s1中是否存在子串与s2相等,使用strstr函数 char new_s1[301] = {0}; // 申请一个新字符串替换s1 char *start = strstr(s1, s2); // 获取s1子串与s2相等的开始位置 int len1 = start - s1; // 获取子串前面的部分所占长度 int len2 = strlen(s2); // 获取子串所占长度 int len3 = strlen(s3); // 获取替换字符串所占长度 strncpy(new_s1, s1, len1); // 将s1子串前面的部分拼接到新字符串 strcat(new_s1, s3); // 将替换字符串拼接到新字符串 strcat(new_s1, s1 + len1 + len2); //将s1子串后面的部分拼接到新字符串 strcpy(s1, new_s1); // 修改s1的值,为新字符串的值 } printf("%s", s1); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 4无用
悬赏问题
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算