思路
找到第一个字符串'\0'位置p,然后把第二个字符串复制到p开始的位置
代码实现
char * mystrcat(char * str1, char * str2){
if(NULL == str1 || NULL == str2){
printf("mystrcat param error\n");
return NULL;
}
int len1 = strlen(str1);
int len2 = strlen(str2);
char * p1 = str1;
char * p2 = str2;
char * t1 = p1 + len1 - 1;
t1++; /*复制到第一个字符串的'\0'的地方*/
memcpy(t1, p2, len2);
str1[len1 + len2] = '\0';
return str1;
}
void testmystrcat(void){
char str1[100] = "Hello";
char str2[100] = " Feng!";
printf("\n************ testmystrcat ************ \n");
mystrcat(str1, str2);
printf("after strcat is : %s\n", str1);
return;
}
代码编译
gcc main.c str.c -g -o a.exe
调试输出
************ testmystrcat ************
after strcat is : Hello Feng!