|
发表于 2013-1-4 12:16:22
|
显示全部楼层
回帖奖励 +2 鱼币
- #include<stdio.h>
- #include <malloc.h>
- char *MyStrcat(char *Deststr,char *Sourstr); //函数声明通常放在外面
- int main()
- {
- char a[20],b[30];
- char *p;
- printf("please write something:\n");
- gets(a);
- printf("please write another one:\n");
- gets(b);
- p = MyStrcat(a,b);
- printf("%s\n",p);
- free(p); //这里要释放内存。
- return 0;
- }
- char *MyStrcat(char *Deststr,char *Sourstr)
- {
- char *p = (char*)malloc(50); //这里改成动态内存分配
- int i,j=0;
- for(i=0;*Deststr!='\0';i++,j++,Deststr++)
- p[i]=*Deststr;
- for(i=j;*Sourstr!='\0';i++,j++,Sourstr++)
- p[i]=*Sourstr;
- p[i]='\0';
- return(p); //你的p指针指向的ch数组是局部变量,这个函数运行结束后,
- //这块内存被收回,p指向的内存里面的内容就不确定了。
- //改用动态内存分配,p指向的内存是堆中的,不会被回收,
- //需要我们自己释放。
- }
复制代码 |
|