”堆分配存储表示串“的问题
先上代码。
程序代码:#include<stdio.h>
#include<stdlib.h>
#define maxstrlen 255
typedef struct
{
char *ch;
int length;
}HString;
int StrAssign(HString T,char *chars)
{
int i,k;
char *c,*tem;
c=chars;
if(T.ch)free(T.ch);
for(i=0;c;++i,++c)
;
if(!i){T.ch = NULL;T.length=0;}
else
{
if(!(T.ch = (char*)malloc(sizeof(char)*i)))
exit(1);
for(k=0;k<i;k++)
T.ch[k]=chars[k];
T.length = i;
}
return 1;
}
void StrPrint(HString T)
{
int i;
for(i=0;i<T.length;i++)
printf("%c",T.ch[i]);
printf("\n");
}
int main()
{
HString T;
char str[maxstrlen];
gets(str);
T.ch = NULL;
StrAssign(T,str);
StrPrint(T);
return 0;
}程序中主要是这段代码有问题
for(i=0;c;++i,++c)
;
本来想c指到字符串末尾的‘\0’会停止这个循环,但是却无法停止,各位高人看看哪里有问题??









