#include<stdio.h>
#include<assert.h>
#include<string.h>
#define N 50

// char *my_strcat(char *dest, char *src)
// {
    // assert((dest != NULL)&&(src != NULL));//断言:判断表达式一定为真,若为假,则终止程序    
    // char  *p = dest;
    // while(*dest != '\0')//找到数组dest中\0的位置
    // {
        // dest++;
    // }
    // while(*src != '\0')//从数组dest中\0的位置开始,依次赋数组src中的值
    // {
        // *dest = *src;
        // dest++;
        // src++;
    // }
    // *dest = '\0';
    // return p;
// }

char *my_strcat(char *dest, char *src)
{
    assert((dest != NULL)&&(src != NULL));//断言:判断表达式一定为真,若为假,则终止程序    
    char  *p = dest;
    while(*dest++);//找到数组dest中\0的位置    
    while((*dest++ = *src++) != 0);//从数组dest中\0的位置开始,依次赋数组src中的值
    return p;
}
int main(int argc, const char *argv[])
{
    char buf[N] = {"abcdefgtyui"};//定义需要传给形参,给形参赋值的变量
    char buff[] = {"12345"};
    char *p = NULL;
    int i = 0;
    p = my_strcat(buf, buff);
    for(i = 0;i< N;i++)
    {
        //printf("%c ",*(p + i));
        printf("%c ",p[i]);
    }
    
    putchar('\n');
    printf("strcat(buf, buff) = %s\n", p);
    p = strcat(buf, buff);
    printf("strcat(buf, buff) = %s\n", p);
    
    return 0;
}