65,186
社区成员




#include <iostream>
#include <stdlib.h>
using namespace std;
//堆分配存储表示
const int ERROR=-1;
const int OK=1;
typedef int Status;
typedef struct {
char *ch; //若是非空串,则按串长分配存储区,否则ch为空
int length; //串长度
}HString;
Status StrAssign(HString &T,char *chars){
if(T.ch) free(T.ch);
int i=0;
char *c=NULL;
for(c=chars;*c!='\0';++c){
++i;
}
if(!i){
T.ch=NULL;
T.length=0;
}else{
T.ch=(char*)malloc(i*sizeof(char));
if(!T.ch) return ERROR;
for(int j=0;j<i;++j){
T.ch[j]=chars[j];
}
T.length=i;
}
return OK;
}
void DisHString(HString s){
cout<<"the string is ";
for(int i=0;i<s.length;++i){
cout<<s.ch[i];
}
cout<<endl<<"and length is "<<s.length<<endl;
}
int main()
{
char c[5]="abcd";
HString s1;
StrAssign(s1,c);
cout<<"s1 is:";
DisHString(s1);
//------------------
char d[6]="hello";
HString s2;
StrAssign(s2,d);
DisHString(s2);
//------------------
return 0;
}