#include <stdio.h>
#define M 255
typedef struct node{
char data[M];
int length;
}SString;
void Init_Str(SString &str){
str.data[0]='\0';
str.length=0;
}
int strlen(char s[]){
int i=0;
while(s[i]!='\0'){
i++;
}
return i+1;
}
void StrAssign(SString &str,char s[]){
for(int i=0;i<strlen(s);i++){
str.data[i]=s[i];
}
str.length=strlen(s);
}
bool StrCopy(SString &str,SString T){
if(T.length==0){
return false;
}
for(int i=0;i<T.length;i++){
str.data[i]=T.data[i];
}
str.length=T.length;
return true;
}
int StrCompare(SString str,SString T){
for(int i=0;i<str.length-1 && i<T.length-1;i++){
if(str.data[i]<T.data[i]){
return -1;
}
if(str.data[i]>T.data[i]){
return 1;
}
}
if(str.length<T.length){
return -1;
}
if(str.length==T.length){
return 0;
}
if(str.length>T.length){
return 1;
}
}
bool Concat(SString &str,SString s){
if(str.length+s.length>M){
return false;
}
int j=0;
for(int i=str.length-1;i<str.length+s.length-1;i++){
str.data[i]=s.data[j];
j++;
}
str.length=str.length+s.length-1;
return true;
}
SString SubString(SString &Sub,SString S,int pos,int len){
if(pos<0 || pos>S.length || pos+len>S.length){
return Sub;
}
Sub.length=len;
for(int i=pos-1;i<pos+len-1;i++){
Sub.data[i]=S.data[i];
}
return Sub;
}
bool EmptyStr(SString str){
if(str.length==0){
return true;
}
return false;
}
void test(){
SString s,t,h;
Init_Str(s);
Init_Str(t);
Init_Str(h);
char ch[20]="bbbbb";
char ch1[8]="bbb";
StrAssign(s,ch);
puts(s.data);
StrAssign(t,ch1);
puts(t.data);
SubString(h,s,1,6);
puts(h.data);
}
int main(){
test();
return 0;
}