目录
strcpy函数功能介绍
strcpy函数的模拟实现
代码演示:
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* destination, const char* source)
{
assert(destination != NULL);
assert(source != NULL);
char* ret = destination;
while (*destination++ = *source++);
return ret;
}
int main()
{
char arr1[] = "hello world";
char arr2[20] = { 0 };
printf("%s\n", my_strcpy(arr2, arr1));
return 0;
}
代码解析:
解析:assert(destination != NULL); & assert(source != NULL);
assert 为宏,用于断言,当 assert 中的判断式为假时,也就是当 destination 或者source为空(NULL)时,程序就会直接报错,并指出 assert 报错的行数
解析:char* ret = destination;
创建 char*类型 的 指针变量ret ,用来存储 **目的地字符串(destination)**的起始位置,以便于返回
解析:while (*destination++ = *source++);
**后置++的规则:**先使用,后++
所以是 source 解引用后赋值给解引用后的 destination,再各自++
且 while循环 内是赋值表达式,赋值表达式的结果就是 source 赋值 destination 后的结果,刚好能把 source 的 '\0' 也赋值给 destination,并且结束循环
代码验证:
当 destination 或者 source 为空(NULL)时:
不接收 my_strcpy函数 的返回值:
接收 my_strcpy函数 的返回值:
my_strcpy函数 的返回值 直接作为 printf函数 的参数: