求助:数组字符串的打印问题 估计'\0'的原因
程序代码:
#include<stdio.h> #include<stdlib.h> typedef struct { char *data; int length; }SqString; void Pri_String(SqString *str); int StrAssign(SqString *Sq,char *ch); SqString Concat(SqString S,SqString T); int main() { SqString str1; SqString str2; SqString *p=&str1; SqString *q=&str2; StrAssign(p,"Hello"); StrAssign(q,"olleH"); Pri_String(p); Pri_String(q); SqString str3=Concat(str1,str2); SqString *str=&str3; Pri_String(str); return 0; } int StrAssign(SqString *Sq,char *ch) /*由串常量ch创建串sq*/ { char *flag=ch; int len; while(*flag!='\0') flag++; len=flag-ch; Sq->data=(char *)malloc((len+1)*sizeof(char)); if(Sq->data==NULL) { printf("Apply space is not succesed!"); exit(0); } flag=Sq->data; while(*flag++=*ch++) ; *flag='\0'; Sq->length=len; printf("1\n"); return 0; } void Pri_String(SqString *str) //打印函数 { /* SqString *index=str; while(*index->data!='\0') { printf("%c",*index->data); index->data++; } printf(" "); // 困惑1 ?? printf("%d\n",str->length); //使用这段打印代码 最后的一个Pri_String(str)调用 printf("here\n"); */ //打印的应该是HelloolleH 但事实上打印的是空的 求解释 谢谢??? printf("%s\n",str->data); //困惑2 printf("%d\n",str->length); //使用这段代码答应 出现的结果HelloolleH? 这个?号 求解释? printf("\n"); } SqString Concat(SqString S,SqString T) /*将串T连接到串S后*/ { SqString str; str.length=S.length+T.length; str.data=(char *)malloc((str.length+1)*sizeof(char)); for(int i=0;i<S.length;i++) str.data[i]=S.data[i]; for(i=0;i<T.length;i++) str.data[S.length+i]=T.data[i]; str.data[str.length+1]='\0'; return str; }