//链接两个字符串
//先malloc分配两个字符串长度之和的空间
//再将第一个复制上去
//最后strcat链接
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void fuzhi(char *a,char *b)//把a复制给b
{
while(*a!='0')
{
*b=*a;
a++;
b++;
}
*b='\0';
}
int main()
{
char a[]="I love JNU,";
char b[]="which is a beautiful campus.";
char *c=NULL;
int len=strlen(a)+1+strlen(b)+1;
c=(char *)malloc(sizeof(char)*len);//先分配空间
memset(c,0,sizeof(char)*len);//初始化
fuzhi(a,c);
printf("%s\n",c);
//strcpy(c,a);
strcat(c,b);
printf("%s\n",c);
free(c);//释放!
return 0;
}
1.如图所示
会报错,执行不下去
2.如果加上这一行代码
可以执行
但是到free这里就停住了
这是为什么呀
3.如果不引用写的函数,用strcpy复制的话,那么是可以正常运行的
4.写的那个fuzhi函数单独的可以正常运行