永发信息网

数据结构问题,要具体代码

答案:1  悬赏:0  手机版
解决时间 2021-06-03 07:17
  • 提问者网友:聂風
  • 2021-06-02 12:28

有两个字符串,从一个字符串的pose位置起,取长度为length的一段,插入到另一个字符串中

最佳答案
  • 五星知识达人网友:千夜
  • 2021-06-02 13:38

#include <stdio.h>
#include <stdlib.h>


int main()
{
char* getString(char *p,int,int);
char* insertString(char *p,char *q,int);
char *p=(char *)malloc(50*sizeof(char));
char *q=(char *)malloc(50*sizeof(char));
char *mid=(char*)malloc(50*sizeof(char));
int pose,length,i,j=0;


printf("请分别输入源字符串和目标字符串:\n");
scanf("%s %s",p,q);
getchar();//接收回车字符
while(1)
{


printf("输入要截取的字符串的起始位置(从0开始)和长度:\n");
scanf("%d %d",&pose,&length);
getchar();


while(p[j]!='\0')
j++;
if(length>(j-pose))
length=j-pose;


if(pose>=j||pose<0)
printf("请重新输入起始位置!");
if(length<=0)
printf("请重新输入长度!");
if(pose>=0&&pose<j&&length>0)
break;


}


mid=getString(p,pose,length);
while(1)
{
printf("输入要插入字符串的起始位置:\n");
scanf("%d",&i);
getchar();
while(p[j]!='\0')
{
j++;
}
if(i>j||i<0)
printf("请重新输入!");
else
break;
}
q=insertString(q,mid,i);
i=0;
while(q[i]!='\0')
printf("%c",q[i++]);
return 0;
}


char* getString(char *p,int pose,int length)
{
char *temp=(char *)malloc(50*sizeof(char));
int i=0;
for(;i<length;i++)
{
temp[i]=p[i];
}
temp[i]='\0';
return temp;



}
char* insertString(char *q,char *mid,int i)
{
char *temp=(char *)malloc(50*sizeof(char));
int j=0,m=0;


while(q[i+j]!='\0')
{
temp[j]=q[i+j];
j++;
}
temp[j]='\0';
j=0;
while(mid[j]!='\0')
{
m=i+j;
q[m]=mid[j];
j++;
}
j=0;
m++;
while(temp[j]!='\0')
{
q[m+j]=temp[j];
j++;
}
free(temp);
q[m+j]='\0';
return q;


}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯