代码
`#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//定义字符串的堆存储类型
typedef struct
{
char *ch;
int length;
} HString;
int Stringassign( HString *s,char *str)//串的赋值
{//把str串赋值给t
//1 求str的长度
//2 把str赋值给s s开辟空间
int i,len=0;
char *c;
for( c=str;*c!='\0';c++);//求 str串的长度
len++;
printf("len=%d\n",len);
if(len==0)
{
s->ch =(char *)malloc(sizeof(char));
s->ch [0]='\0';
s->length =0;
}
else{
s->ch =(char *)malloc((len+1)*sizeof(char));
if(!s->ch )
return 0;
for(i=0;i<len;i++)
s->ch [i]=str[i];
s->ch ='\0';
s->length=len;
return 1;
}
}
void main()
{
HString s;
char str[20];
int m;
printf("输入\n") ;
gets(str);//字符串的输入函数,可多输
printf("\n输出字符串\n");
puts(str);//字符串的输出函数
m=Stringassign(&s,str);
puts(s.ch );
// m=strlen(str);
//s.ch =(char *)malloc((m+1)*sizeof(char));
// printf("\n输出字符串\n");
//strcpy(s.ch ,str);
//puts(s.ch );
}