”堆分配存储表示串“的问题
先上代码。程序代码:
#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’会停止这个循环,但是却无法停止,各位高人看看哪里有问题??