市场营销logo寓意:请问这段串操作的程序为什么执行时提示"eug Asertion Failed!"

来源:百度文库 编辑:中科新闻网 时间:2024/05/01 03:45:04
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
#define OVERFLOW -2
#define OK 1
#define ERROR -1
#define NULL 0

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

int Concat(HString &T,HString S1,HString S2)
{
if(T.ch) free(T.ch); //释放旧空间
if(!(T.ch=(char *)malloc((S1.length+S2.length)*sizeof(char))))
exit(OVERFLOW);
for(int i=0;i<S1.length;i++)
{T.ch[i]=S1.ch[i];}
T.length=S1.length+S2.length;
for(i=S1.length;i<(S1.length+S2.length);i++)
{
int k=0;
T.ch[i]=S2.ch[k];
k++;
}
return OK;
}

int SubString(HString &Sub,HString V,int pos,int len)
{
if(pos<1||pos>V.length||len<0||len>(V.length-pos+1))
return ERROR;
if(Sub.ch) free(Sub.ch);
if(!len)
{
Sub.ch=NULL;Sub.length=0;
}
else
{
Sub.ch=(char *)malloc(len*sizeof(char));
for(int a=0;a<len;a++)
{
Sub.ch[a]=V.ch[pos-1];
pos++;
Sub.length=len;
}
}

return OK;
}

void main()
{
HString S;
HString SS;
HString str_1={"Hello ",6};
HString str_2={"world",5};
Concat(S,str_1,str_2);
SubString(SS,str_1,1,2);
printf("%s",S.ch);
printf("\n");
printf("%s",SS.ch);
}
怎么改一下啊?