#include<stdio.h>
#include<stdlib.h>
typedef struct {
char *ch;
int length;
}str;
int main()
{
char chars[]="asdfghjkl";
str T
StrAssign(T,chars);
char chars2[]="asdfghjkmas";
str S;
StrAssign(S,chars2);
show(T);
}
Status StrAssign(str &T,char *chars)
{
int i;
char*c;
if(T.ch) free(T.ch);
for(i=0,c=chars;*c;i++,c++);
for(int j=0;j<i;j++)
if(i==0){T.ch=NULL;T.length=0;
}
else{
if(!(T.ch=(char*)malloc(i*sizeof(char))))
exit (OVERFLOW);
for(int j=0;j<i;j++)
T.ch[j]=chars[j];
T.length=i;
}
printf("%d\n",T.length);
return OK;
}
Status show(str T)
{
for(int j=0;j<T.length;j++)
printf("%c\t",T.ch[j]);
return OK;
}
修改如下,供参考:
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define OVERFLOW -1
typedef int Status;
typedef struct {
char *ch;
int length;
}str;
Status StrAssign(str &T,char *chars)
{
int i;
char*c;
if(T.ch) free(T.ch);
for(i=0,c=chars;*c;i++,c++);
//for(int j=0;j<i;j++)
if(i==0){T.ch=NULL;T.length=0;
}
else{
T.ch=(char*)malloc((i+1)*sizeof(char));
if(!T.ch)
exit (OVERFLOW);
for(int j=0;j<i;j++)
T.ch[j]=chars[j];
T.length=i;
}
//printf("%d\n",T.length);
return OK;
}
Status show(str T)
{
for(int j=0;j<T.length;j++)
printf("%c\t",T.ch[j]);
printf("\n");
return OK;
}
int main()
{
char chars[]="asdfghjkl";
str T;
T.ch = NULL;
StrAssign(T,chars);
char chars2[]="asdfghjkmas";
str S;
S.ch = NULL;
StrAssign(S,chars2);
show(T);
show(S);
return 0;
}