求助:数组字符串的打印问题 估计'\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;
}







有疑问的地方都注释了