串的定长顺序存储,帮忙看哪错了,运行后是乱码
#include"stdio.h"#include"malloc.h"
#define maxsize 256
typedef struct
{
char ch[maxsize+1];
int length;
}string;
int concat(string&t,string&s1,string&s2)
{
if(s1.length+s2.length<maxsize)
{for(int i=0;i<s1.length;i++)
t.ch[i]=s1.ch[i];
for( i=0;i<s2.length;i++)
t.ch[s1.length+i]=s2.ch[i];
t.length=s1.length+s2.length;
t.ch[t.length]='\0';
return 1;
}
else if(s1.length<maxsize)
{for(int i=0;i<s1.length;i++)
t.ch[i]=s1.ch[i];
int m=maxsize-s1.length;
for( i=0;i<m;i++)
t.ch[s1.length+i]=s2.ch[i];
t.length=maxsize;
t.ch[maxsize]='\0';
return 0;
}
else return 0;
}
int main()
{
string t,s1,s2;
char e;
int i=0;
s1.length=s2.length=0;
scanf("%c",&e);
while(e!='\n'){
s1.ch[i++]=e;
s1.length++;
scanf("%c",&e);
}
scanf("%c",&e);
while(e!='\n'){
s2.ch[i++]=e;
s2.length++;
scanf("%c",&e);
}
concat(t,s1,s2);
for(i=0;i<t.length;i++)
printf("%c",t.ch[i]);
return 1;
}