输入三个字符串,将字符串1中里的字符串2用字符串3代替
来源:互联网 发布:淘宝的清关资料哪里填 编辑:程序博客网 时间:2024/05/20 14:23
题目:编写程序输入三个字符串,写一函数实现:输入三个字符串,将字符串1中里的字符串2用字符串3代替。
例如:
串1:“abcdefgh123456xy123xyxy”
串2:“1234”
串3:“ABCDE”
处理完后串1变为:"abcdefghABCDE56xy123xyxy"
思路:1.找出串1与串2重叠的位置(从头开始找,找到串1中与串2一一对应的片段,然后定位)
2.定好重复的位置后,利用函数将串1在与串2重复的位置分成两段(例如上题两段分别是“abcdefgh”和“56xy123xyxy”)
好了,思路有了就上源代码吧:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxn 105
int main(int argc, char* argv[])
{
char a[maxn],b[maxn],c[maxn],buf[maxn]={0};
scanf("%s%s%s",a,b,c);
int len2=strlen(b);
int len1=strlen(a);
int first=stringfind(a,b);
if(first!=0)
{
strcut(a,buf,len1,first,len2);
strcat(a,c);
strcat(a,buf);
printf("%s\n",a);
}
return 0;
}
void strcut(char* p,char* buf,int len1,int first,int len2) //strcut函数用来实现思路2
{
int j=0;
int i=first+len2; //这里的i的值是切开后第二个片段的第一个字符的位置
#include <stdlib.h>
#include <string.h>
#define maxn 105
int main(int argc, char* argv[])
{
char a[maxn],b[maxn],c[maxn],buf[maxn]={0};
scanf("%s%s%s",a,b,c);
int len2=strlen(b);
int len1=strlen(a);
int first=stringfind(a,b);
if(first!=0)
{
strcut(a,buf,len1,first,len2);
strcat(a,c);
strcat(a,buf);
printf("%s\n",a);
}
return 0;
}
void strcut(char* p,char* buf,int len1,int first,int len2) //strcut函数用来实现思路2
{
int j=0;
int i=first+len2; //这里的i的值是切开后第二个片段的第一个字符的位置
while((i+j)<len1)(PS:可以多尝试,用debug发现规律)
{
buf[j]=p[i+j];
j++;
}
p[first]='\0';
}
int stringfind(char *m,char *n) //stringfind函数用来实现思路1
{
int i,j;
for(i=0;m[i]!='\0';i++)
{
if(m[i]!=n[0]) continue; //先判断串1中与串2第一个字符'1'相同的位置
j=0;
while(n[j]!='\0'&&m[i+j]!='\0') //再逐个判断串1中的‘1’后面字符是否与串2的一一对应
{
j++;
if(m[i+j]!=n[j])break;
}
if(n[j]=='\0')return i;
}
return 0;
}
{
buf[j]=p[i+j];
j++;
}
p[first]='\0';
}
int stringfind(char *m,char *n) //stringfind函数用来实现思路1
{
int i,j;
for(i=0;m[i]!='\0';i++)
{
if(m[i]!=n[0]) continue; //先判断串1中与串2第一个字符'1'相同的位置
j=0;
while(n[j]!='\0'&&m[i+j]!='\0') //再逐个判断串1中的‘1’后面字符是否与串2的一一对应
{
j++;
if(m[i+j]!=n[j])break;
}
if(n[j]=='\0')return i;
}
return 0;
}
阅读全文
1 0
- 输入三个字符串,将字符串1中里的字符串2用字符串3代替
- 字符串全用字符代替
- 字符串编程,将字符串S中出现的子串T1用字符串T2替代。
- 第四次编程练习:字符串编程,将字符串S中出现的子串T1用字符串T2替代。
- 用字符集中的字符分隔字符串
- 用字符串变量存放字符串
- c# 用字符串分割字符串
- 将输入的字符串反转
- 网易有道9-13北邮笔试题:输入字符串,将字符串里的*用0或1替换,输出所有可能的字符串
- 用字符串来用割字符串
- 用字符串来分割字符串
- 用字符补齐字符串长度
- 24. 编写函数:将输入的任意三个字符串合并,按顺序合并为一个新的字符串。
- 将输入字符串中每个单词的首字母变成大写
- java 中利用subString 截取字符串中第三个"/"后面的内容,并将/用>代替
- QString::arg()//用字符串变量参数依次替代字符串中最小数值
- 用字符数组存放一个字符串
- 用字符指针指向一个字符串
- C++Primer习题第七章
- Ubuntu使用ffmpeg切割视频
- 大华摄像头java开发之抓图
- CISC与RISC
- Linux vim列编辑
- 输入三个字符串,将字符串1中里的字符串2用字符串3代替
- 如何使用intel AI Academy的云计算集群【从申请到应用】
- [uboot] (番外篇)uboot 驱动模型
- js:九宫格抽奖
- wait、notify、notifyAll、sleep、join、yield
- Exception occurred during processing request: com.hry.shop.user.action.UserAction.findByName()
- 聊一聊laravel query builder 使用子查询
- Linux 进程相关 常用命令
- 工资计算