strcpy的基本用法详解以及模拟实现strcpy

1. strcpy的基本用法详解

1.1 问题的提出

例如 我们要把字符串"hello"复制到数组arr[20]中去时,你会怎么操作;

首先   arr = "hello";//是错误的

arr数组名是首元素的地址,是个地址常量,是个编号;难道把hello放到这个编号上?

答案应该是放到编号所指向的空间中去;

其中 destination是目标空间的地址,source是源空间的地址

1.2 strcpy的基本原理:

把源指针指向的空间的数据拷贝到目的地指针指向的空间中去;

char* p = "hello";//把首字符的地址放到p中,p就指向了这个字符串;

strcpy(arr,"hello");

"hello"传参的时候传过去的是首字符'h'的地址,传给了source;其中destination指向了arr[20]整个数组,source指向了hello中'h'的地址;然后把source指向的hello拷贝放到destination指向的arr[20]中去;

1.3使用 strcpy的注意事项:

1.源字符串必须以 '\0' 结束

当拷贝"hello"时字符串的结束标志'\0'也会被拷贝过去,'\0'也是strcpy终止拷贝的一个条件;

2.会将源字符串中的 '\0' 拷贝到目标空间

3.目标空间必须足够大,以确保能存放源字符串

例如 arr[5]=0; strcpy(arr,"hello world");这是错误的

4.目标空间必须可变

例如
char* str = "123456789000";
char* p = "hello world";
strcpy(str,p);//这也是错误的
因为该目标空间是常量字符串,不可修改;

2. 模拟实现strcpy

char *my_strcpy(char *destination, const char*source)
{ 
 char *ret = destination;
 assert(destination != NULL);
 assert(source != NULL);
 while((*destination++ = *source++))
 {
          ;
 }
 return ret; 
}

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记忆&碎片

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值