模拟实现strcpy函数

目录

strcpy函数功能介绍

strcpy函数的模拟实现


strcpy函数功能介绍

学习并使用strcpy函数-CSDN博客


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函数 的参数: 

相关推荐

  1. strcpystrncpy函数详解

    2024-07-12 23:20:03       31 阅读
  2. 理解并实现C语言中的strcpy函数

    2024-07-12 23:20:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 23:20:03       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 23:20:03       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 23:20:03       62 阅读
  4. Python语言-面向对象

    2024-07-12 23:20:03       72 阅读

热门阅读

  1. 学习大数据DAY15 PLSQL基础语法4

    2024-07-12 23:20:03       17 阅读
  2. 发改委对招标投标领域问题答复汇总

    2024-07-12 23:20:03       24 阅读
  3. 使用JDBC实现事务管理与隔离级别设置

    2024-07-12 23:20:03       19 阅读
  4. SDK游戏盾、高防IP和高防CDN有什么区别

    2024-07-12 23:20:03       19 阅读
  5. docker compose down -v 是什么意思

    2024-07-12 23:20:03       22 阅读
  6. Perl文件锁机制:守护你的数据安全

    2024-07-12 23:20:03       20 阅读
  7. js面试题2024

    2024-07-12 23:20:03       19 阅读
  8. ArkTS学习笔记_自定义组件

    2024-07-12 23:20:03       24 阅读
  9. Oracle的wrap工具怎么用

    2024-07-12 23:20:03       23 阅读
  10. 昇思25天学习打卡营第18天 | LSTM+CRF序列标注

    2024-07-12 23:20:03       20 阅读