注册 登录
编程论坛 数据结构与算法

顺序串的一个问题

long361800 发布于 2011-07-30 19:49, 549 次点击
如下代码::

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef struct
{
    char *ch;
    int length;
}SqString;

void InitStr(SqString &S)
{
    S.ch=NULL;
    S.length=0;
}




int  StrAssign (SqString &T,char *chars)     //生成一个其值等于串常量chars的串T
{
     int i,j;
     char *c;
     if(T.ch)
    free (T.ch);   //释放T原有空间
    for(i=0,c=chars;c;i++,c++);  //求chars的长度i
    if(!i)
    {
        T.ch=NULL;
        T.length=0;
    }
    else
    {
        if(!(T.ch=(char *)malloc(i*sizeof(char))))
        exit (-1);
        for(j=0;j<i;j++)
        T.ch[j]=chars[j];
        T.length=i;
    }
    return 1;
} //StrAssign

void  DispStr(SqString S)
{
   int i;
   if(S.length>0)
   {
    for(i=0;i<S.length;i++)
    printf("%c",S.ch[i]);
    printf("\n");
   }
}  //DispStr


void main()
{
 SqString  S;
char  *string="abcdefhhefghijklmn";

InitStr(S);
printf("结果输出为: %d\n",StrAssign(S,string));
printf("字符串长度为: %d\n",S.length);
DispStr(S);
getchar();

}

没结果输出,关键在于int  StrAssign (SqString &T,char *chars)     //生成一个其值等于串常量chars的串T
这个函数有问题,这个函数是  严蔚敏  书上的给的代码啊,求解释。。。。。。。。
3 回复
#2
诸葛修勤2011-07-30 22:50
你建立的是Cpp
严蔚敏可是c版的
#3
诸葛修勤2011-07-30 23:51
    for(i=0,c=chars;*c;i++,c++);  //求chars的长度i
for(i=0,c=chars;c;i++,c++);  //求chars的长度i
#4
诸葛修勤2011-07-30 23:52
地址 和 指向的内容
1