#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char *ch;
int length;
}Str;
//取串长的长度
int strlength(Str str){
return str.length;
}
//串赋值操作
int strassign(Str& str,char *ch){
//求ch串的长度
int len=0;
char *c=ch;
while(*c){
++len;
++c;
}
if(len==0){
str.ch=NULL;
str.length=0;
return 1;
}
else
{
str.ch=(char*)malloc(sizeof(char)*(len+1));//len+1为了多分配一个空间存放"\0"
if(str.ch==NULL){
return 0;
}else{
c=ch;
for(int i=0;i<=len;i++,++c)// <=是为了将ch最后的\0一起复制到str中
str.ch[i]=*c;
str.length=len;
return 1;
}
}
}
//求子串操作 pos:str中起始下标 len:substr的长度
int substring(Str& substr,Str str,int pos,int len){
if(pos<0||pos>=str.length||len<0||len>str.length-pos)
return 0;
if(len==0){
substr.ch=NULL;
substr.length=0;
return 0;
}
else
{
substr.ch=(char*)malloc(sizeof(char)*(len+1));
int i=pos;
int j=0;
while(j<len){
substr.ch[j]=str.ch[i];
++i;
++j;
}
substr.ch[j]='\0';
substr.length=len;
return 1;
}
}
//打印串操作
int printstr(Str str){
for(int i=0;i<str.length;i++)
printf("%c",str.ch[i]);
printf("\n");
return 1;
}
int main(){
Str str,substr,string;
//串赋值
strassign(str,"Hello world!");
strassign(substr,"llo");
//截取子串并赋值给string
substring(string,str,2,3);
//打印string
printstr(string);
return 0;
}