#include<stdio.h>
#include<stdlib.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef struct{
char* ch;
int length;
}HString;
Status StrAssign(HString &T,char *chars){
if(T.ch) free(T.ch);
int i;
char* p;
for(i=0,p=chars;*p!='\0';i++,p++);
if(i==0){
T.ch = NULL;
T.length=i;
}
else{
T.ch=(char*)malloc(i*sizeof(char));
int j;
for(j=0;j<i;j++){
T.ch[j]=chars[j];
}
T.ch[j]='\0';
T.length=i;
}
return OK;
}
int StrLength(HString S){
return S.length;
}
int StrCompare(HString S,HString T){
for(int i=0;i<S.length&&i<T.length;i++){
if(S.ch[i]!=T.ch[i])
return S.ch[i]-T.ch[i];
}
return S.length-T.length;
}
Status ClearString(HString &S){
if(S.ch){
free(S.ch);S.ch=NULL;
}
S.length=0;
return OK;
}
Status Concat(HString &T,HString S1,HString S2){
if(T.ch) free(T.ch);
T.ch =(char*)malloc((S1.length+S2.length)*sizeof(char));
int i=0;
for(int j=0;j<S1.length;i++,j++)
T.ch[i]=S1.ch[j];
for(int j=0;j<S2.length;i++,j++)
T.ch[i]=S2.ch[j];
return OK;
}
Status SubString(HString &sub,HString S,int i,int len){
if(i<1||i>S.length||len<0||len>S.length-i+1) return ERROR;
if(len==0){
sub.ch=NULL;
sub.length=0;
return OK;
}
sub.ch = (char*)malloc(len*sizeof(char));
for(int j=0;j<len;i++,j++)
sub.ch[j]=S.ch[i-1];
sub.length=len;
return OK;
}
int Index(HString S,HString T,int pos){
if(pos<1||pos>S.length||T.length==0) return 0;
else{
HString sub;
while(SubString(sub,S,pos,T.length)){
if(StrCompare(sub,T)==0) return pos;
else pos++;
}
return 0;
}
}
Status StrInsert(HString &S,int pos,HString T){
if(pos<1||pos>S.length+1) return ERROR;
if(T.length){
S.ch=(char*)realloc(S.ch,(S.length+T.length)*sizeof(char));
for(int i=S.length-1;i>=pos-1;i--){
S.ch[i+T.length]=S.ch[i];
}
for(int i=pos-1,j=0;i<pos+T.length-1;i++,j++){
S.ch[i]=T.ch[j];
}
S.length+=T.length;
}
return OK;
}
void printString(HString S){
printf("\n");
for(int i=0;i<S.length;i++){
printf("%c",S.ch[i]);
}
printf("\n");
}
int main(){
HString s;
char sayHi[100];
scanf("%s",sayHi);
StrAssign(s,sayHi);
printf("s:");
printString(s);
HString s1,s2;
SubString(s1,s,1,4);
SubString(s2,s,3,2);
printf("s1:");
printString(s1);
printf("s2:");
printString(s2);
}