关于串的堆分配存储
ML20 2003-02-06 11:32:18 //欲使用这个程序模拟串的堆分配存储。我希望这个程序运行后显示的是string,可是出错,
//我花了很长时间也没找到错在哪里,望网友们指点。
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char * ch;
int length;
}HString;
int StrAssign(HString * T,char * chars);
int StrDisplay(HString S);
int main(){
HString s;
StrAssign(&s,"string");
StrDisplay(s);
return 0;
}
int StrAssign(HString * T,char * chars){
register int i,j;
char * c;
if(T->ch)free(T->ch);
for(i=0,c=chars;c;i++,c++);
if(!i){
T->ch=NULL;
T->length=0;
}else{
if(!(T->ch=(char *)malloc(sizeof(char)*i)))
return 0;
for(j=0;j<i;j++)
T->ch[j]=chars[j];
T->length=i;
}
return 1;
}
int StrDisplay(HString S){
register int i,len=S.length;
for(i=0;i<len;i++)
printf("%c",S.ch[i]);
return 1;
}