该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW 100
typedef struct
{char *ch ;
int length;
} HString ;
char creatstring( HString &s )
{
int n,i ;
printf("请输入字符串长度n :\n");
scanf("%d", &n);
s.ch=(char*)malloc(sizeof(n*sizeof(char)));
printf("请输入字符串 :\n");
for(i=0; i
scanf("%c",&s.ch[i]);
s.length=n;
}
char output(HString s)
{
printf("%s", s.ch) ;
}
void insertstring (HString &s ,int pos,HString &t)
{
int i,j;
if(pos<1||pos>s.length+1)return ERROR;
if(t.length!=0)
{
if(!(s.ch=(char*)realloc(s.ch,(s.length+t.length)*sizeof(char))))
exit(OVERFLOW);
for(i=s.length-1;i>=pos-1;--i)
s.ch[i+t.length]=s.ch[i];
for(i=pos-1,j=0; i<=pos+t.length-2;i++,j++)
s.ch[i]=t.ch[j];
s.length=s.length+t.length;
}
return OK;
}
void main()
{
int flag,pos;
HString s,t ;
creatstring(&s) ;
creatstring(&t) ;
output(s);
output(t);
printf("请输入插入位置:\n");
scanf("%d", &pos);
flag=insertstring(&s,pos,&t);
if (flag==1)
printf("插入成功!,插入后新字符串为:\n");
output(s) ;
}