有两个字符串,从一个字符串的pose位置起,取长度为length的一段,插入到另一个字符串中
数据结构问题,要具体代码
- 提问者网友:聂風
- 2021-06-02 12:28
- 五星知识达人网友:千夜
- 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;
}