| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 311 人关注过本帖
标题:求助:数组字符串的打印问题 估计'\0'的原因
取消只看楼主 加入收藏
tane05
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-12-28
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:1 
求助:数组字符串的打印问题 估计'\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;
}
搜索更多相关主题的帖子: 字符串 
2011-06-11 22:40
tane05
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-12-28
收藏
得分:0 
有疑问的地方都注释了  求高手解答下 谢谢!
2011-06-11 22:41
快速回复:求助:数组字符串的打印问题 估计'\0'的原因
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077722 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved