#include<iostream>
#define MAXSIZE 10
using namespace std;
typedef int status;
typedef struct
{
char *ch;
int length;
}hstring;
// 初始化
bool init(hstring &s)
{
s.length=l;
if(!(s.ch=(char *)malloc(s.length *sizeof(char))))
return false;
}
//输入字符串
void put(hstring &s)
{
for(int i=0;i<s.length;i++)
cin>>s.ch[i];
}
//输出字符串
void get(hstring &s)
{
for(int i=0;i<s.length;i++)
cout<<s.ch[i];
cout<<endl;
}
//字符串拼接
bool concat(hstring &t,hstring s1,hstring s2)
{
if(t.ch)
free(t.ch);
if(!(t.ch=(char *)malloc((s1.length+s2.length) *sizeof(char))))
return false;
for(int i=0;i<s1.length;i++)
t.ch[i]=s1.ch[i];
t.length=s1.length+s2.length;
for(int j=0;j<s2.length;j++)
t.ch[j+s1.length]=s2.ch[j];
return true;
}
//固定长度截取字符串
bool substring(hstring &sub,hstring s,int pos,int len)
{
if(pos<1||pos>s.length||len<0||len>s.length-pos+1)
return false;
if(sub.ch)
free(sub.ch);
if(!len)
{
sub.ch=NULL;
sub.length=0;
}
else
{
sub.ch=(char *)malloc(len *sizeof(char));
for(int i=0;i<len;i++)
sub.ch[i]=s.ch[pos-1+i];
sub.length=len;
}
return true;
}
//插入字符串
bool insert(hstring &s,int pos,hstring t)
{
if(pos<1||pos>s.length+1)
return false;
if(t.length)
{
if(!(s.ch=(char *)realloc(s.ch,(s.length+t.length) *sizeof(char))))
return 0;
for(int i=s.length-1;i>=pos-1;--i)
s.ch[i+t.length]=s.ch[i];
for(int j=pos-1;j<=pos+t.length-2;j++)
s.ch[j]=t.ch[j-pos+1];
s.length+=t.length;
}
return true;
}
void main()
{
hstring sub,t,s1,s2;
init(s1);
init(s2);
init(t);
init(sub);
cout<<"输入字符串s1:\n";
put(s1);
cout<<"输入字符串s2:\n";
put(s2);
cout<<"字符串拼接后:";
concat(t,s1,s2);
get(t);
cout<<"从s1中截取的长度为4的字串为:";
substring(sub,s1,3,4);
get(sub);
cout<<"插入后:";
insert(s1,2,s2);
get(s1);
}