堆串的基本运算
#include <stdio.h>#include <string.h>
#include <process.h>
#include <malloc.h>
typedef struct
{
char *ch;
int length;
}str;
void concat(str s,str s1)
{
str T;
int i,j;
T.length=s.length+s1.length;
if((T.ch=(char*)malloc((s.length+s1.length+1)*sizeof(char)))==NULL)
{
printf("error");
exit(0);
}
for(i=0,j=0;i<T.length;i++,j++)
{
if(i>=8&&i<8+s1.length)
{
T.ch[i]=s1.ch[i-8];
i++;
}
T.ch[i]=s.ch[j];
}
printf("%s",T.ch);
}
main()
{
str s,s1;
s.ch="abcdefghijklmn";
s1.ch="xyz";
s.length=strlen(s.ch);
s1.length=strlen(s1.ch);
if((s.ch=(char*)malloc((s.length+1)*sizeof(char)))==NULL)
{
printf("error");
exit(0);
}
if((s1.ch=(char*)malloc((s1.length+1)*sizeof(char)))==NULL)
{
printf("error");
exit(0);
}
printf("%s\n",s.ch);
printf("%d\n",s.length);
concat(s,s1);
}
为什么我用这个代码运行出来的字符串是乱码呢? 我把其中的malloc函数去掉 就正常了。。。为什么会这样呢。。想不通。 动态分配地址影响到哪了???