看下图的代码块理清思路
题目描述
将一个字符串插入到另一个字符串当中。算法描述如下:
图:字符串插入算法
输入格式
输入只有一行,两个字符串(stra,strb)和一个整数 i。字符串仅由英文大小写字母或数字组成。输入的字符串长度不超过127。
输出格式
无
样例输入
strng i 4
样例输出
string
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct HString{
char* st;
int length;
}*hstring,HSTRING;
void insert(hstring,HSTRING,int);
void show(hstring);
char* moc();//分配内存
int main(){
hstring s;
HSTRING t;
s=(hstring)malloc(sizeof(HSTRING));
int i;
s->st=moc();
t.st=moc();
while(~scanf("%s",s->st)){
getchar();
scanf("%s",t.st);
getchar();
scanf("%d",&i);
getchar();
s->length=strlen(s->st);
t.length=strlen(t.st);
insert(s,t,i);
}
}
void insert(hstring s,HSTRING t,int i){
if(i<1||i>s->length+1)
return;
if(t.length){
s->st=(char*)realloc(s->st,(s->length+t.length+1)*sizeof(char));
for(int j=s->length-1;j>=i-1;j--){
s->st[j+t.length]=s->st[j];
}
for(int k=0;k<t.length;k++){
s->st[i-1+k]=t.st[k];
}
s->length+=t.length+1;
s->st[s->length]='\0';
}
show(s);
}
void show(hstring s){
printf("%s\n",s->st);
}
char* moc(){
return (char*)malloc(128*sizeof(char));
}