主题:[原创]这是个串的赋值的原代码,编译通过!出不来结果!!为什么??
#include <stdio.h>
#include<string.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct
{char *ch;//若是非空串,则按串长分配存储区,否则 ch 为NULL
int length;
}HString;
HString *T;
//-----------------------基本操作----------------------------------
Status StrAssign(HString *T,char *chars)
{//生成一个其值等于串常量chars的串T
int i,j;
if(T->ch) free(T->ch);
i=strlen(chars);
if(!i){T->ch=NULL;T->length=0;}
else
{T->ch=(char*)malloc(i*sizeof(char));
if(!T->ch) return ERROR;
for(j=0;j<i;j++) T->ch[j]=chars[j];
T->ch[j]='\0';
T->length=i;}
return OK;
}//StrAssign
main()
{
int i;
char *s,c[10];
printf("请输入一个字符串:");
s=gets(c);
printf("%s",s);
StrAssign(T,s);
printf("\n请输出该字符串:");
for(i=0;i<T->length;i++)
printf("%c",T->ch[i]);
return 1;
}[em18]
#include<string.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct
{char *ch;//若是非空串,则按串长分配存储区,否则 ch 为NULL
int length;
}HString;
HString *T;
//-----------------------基本操作----------------------------------
Status StrAssign(HString *T,char *chars)
{//生成一个其值等于串常量chars的串T
int i,j;
if(T->ch) free(T->ch);
i=strlen(chars);
if(!i){T->ch=NULL;T->length=0;}
else
{T->ch=(char*)malloc(i*sizeof(char));
if(!T->ch) return ERROR;
for(j=0;j<i;j++) T->ch[j]=chars[j];
T->ch[j]='\0';
T->length=i;}
return OK;
}//StrAssign
main()
{
int i;
char *s,c[10];
printf("请输入一个字符串:");
s=gets(c);
printf("%s",s);
StrAssign(T,s);
printf("\n请输出该字符串:");
for(i=0;i<T->length;i++)
printf("%c",T->ch[i]);
return 1;
}[em18]