#include <stdio.h> #include <assert.h> #include <string.h> char *my_strcat(char *a, const char *b) { assert(a && b); char *c = a; while(*c != '\0') c++; //(int n = ( strlen(a)) ) ( a[n++] = *b++) != '\0' while((*c++ = *b++) != '\0'){} return a; } int main () { char str1[] = {"abc"}; char str2[] = {"def"}; printf("my strcat %s\n", my_strcat(str1, str2)); //abcdef return 0; } #include <stdio.h> #include <assert.h> #include <string.h> char *my_strcat(char *a, const char *b) { assert(a && b); char *c = a; while(*c != '\0') { c++; } while(*b != '\0') { *c++ = *b++; } *c = *b; //还有一个'\0'没有输入,上面程序只是加了。 return a; } int main () { char str1[] = {"abc"}; char str2[] = {"def"}; printf("my strcat %s\n", my_strcat(str1, str2)); //abcdef return 0; }