#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; }