完整代码:
1 #include <stdio.h> 2 #include <string.h> 3 #include <malloc.h> 4 5 #define TRUE 1 6 #define FALSE 0 7 8 char * 9 strca(char *, char *); 10 11 char * 12 join1(char *, char *); 13 14 int 15 main(void) { 16 char *a = "你好"; 17 char *b = "de我"; 18 printf("%s\n", strca(a, b)); 19 } 20 21 char * 22 strca(char *des, char *src) { 23 char *r = (char *)malloc(sizeof(strlen(des)) + sizeof(strlen(src)) + 1); //尾部存放‘\0‘中终止符. 24 if(!r) { 25 printf("out of memory!\n"); 26 return FALSE; 27 } 28 char *tmp = r; //保存首地址. 29 /* while( *r++ = *des++ ) 30 */ ; 31 32 while( *des ) 33 *r++ = *des++; 34 35 while( *r++ = *src++ ) 36 ; 37 return tmp; 38 }
最近在打C基础,现在还没完全弄明白 strca 函数中,注释部分(第 29~30 行)的代码为什么不能达到想要的效果.这两天才开始研究 x86和c的disassembly,国内的资料少,再加上最近复习考研,有点忙,慢慢来吧.
时间: 2024-10-18 07:02:26