|
发表于 2014-4-29 13:20:39
|
显示全部楼层
弄了半天发现有几个问题:
1、src指向只读空间,后面又拿去赋值(*dest=*src),是不行的。
2、src先赋值为字符串,然后才malloc,这样指针就变了,不指向字符串了。
作如下修改在C-FREE下编译通过:
- #include<stdio.h>
- #include<malloc.h>
- #include<stdlib.h>
- #include <string.h>
- void catstr(char *dest,char *src);
- int main()
- {
- char *dest;
- char *src;
-
- src=(char *)malloc(256);
-
- strcpy(src,"help you?");
-
- if((dest=(char *)malloc(80))==NULL)
- {
- printf("no memory\n");
- exit(1);
- }
-
- strcpy(dest,"Can I ");
- puts(dest);
- puts(src);
- catstr(dest,src);
-
- puts(dest);
-
- return 0;
- }
- void catstr(char *dest,char *src)
- {
- int i=0;
- int slen=strlen(src);
-
- while(*dest) dest++;
-
- for(i=0;i<=slen;i++)
- {
- *dest=*src;
- src++;
- dest++;
-
- }
- }
复制代码 |
|