【C语言】【strcpy的使用和模拟实现】

1.strcpy的使用:

c 复制代码
char* strcpy(char* destination,const char* source)

返回类型是字符指针,参数是接受方字符串的首地址和要拷贝的字符串的首地址

  • 从接受地的'\0'开始拷贝,会将源字符串中的'\0'也拷贝过来
  • 目标空间必须足够大,能放开源字符串
  • 目标空间必须可变

使用举例:

c 复制代码
#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "hello bit";
	char arr2[20] = "xxx";
	strcpy(arr2, arr1);
	printf("%s\n", arr2);
	return 0;

}

2.strcpy的模拟实现:

版本一:

c 复制代码
#include<stdio.h>
#include<string.h>
void my_strcpy(char* dest, const char* src)
{
	//当arr2不等于'\0'时
	while (*src)
	{
		*dest = *src;
		dest++;
		src++;
	}
	//当arr2等于'\0'时
	*dest = *src;
}
int main()
{
	char arr1[] = "abcdef";
	char arr2[20] = { 0 };
	my_strcpy(arr2, arr1);
	printf("%s\n", arr2);
	return 0;
}

版本二:(高阶版)两部分合到一起

c 复制代码
#include<stdio.h>
#include<string.h>
void my_strcpy(char* dest, const char* scr)
{
	while (*dest++ = *scr++)
	{
		;
	}
}
int main()
{
	char arr1[] = "abcde";
	char arr2[20] = { 0 };
	my_strcpy(arr2, arr1);
	printf("%s", arr2);
}

这个方法的妙处就在于 while循环的条件中,当 *scr='\0'时,while 循环会自动跳出,而且scr中'\0'也能被拷贝到dest中

相关推荐
不灭锦鲤几秒前
网络安全学习第163天
学习·安全·web安全
鱼鳞_3 分钟前
Java学习笔记_Day20(二叉树)
java·笔记·学习
番茄去哪了8 分钟前
任务调度功能实现
java·开发语言·spring boot
CDA数据分析师干货分享28 分钟前
石油工程专业炼油厂一线岗位转行数据分析岗,CDA数据分析师二级学习经验
深度学习·学习·数据挖掘·数据分析·cda证书·cda数据分析师
Beginner x_u28 分钟前
前端八股整理|JavaScript|高频小题 01
开发语言·前端·javascript
_MyFavorite_30 分钟前
JAVA重点基础、进阶知识及易错点总结(15)缓冲流 + 转换流
java·开发语言·spring boot
卖报的大地主1 小时前
Learn Claude Code Agent 开发 | 8、后台异步执行:慢操作不阻塞主工作流
人工智能·笔记
爱编码的小八嘎1 小时前
C语言完美演绎6-14
c语言
摇滚侠1 小时前
JAVA 项目教程《苍穹外卖-11》,微信小程序项目,前后端分离,从开发到部署
java·开发语言·微信小程序
执笔论英雄1 小时前
【vllm】vllm根据并发学习调度
java·学习·vllm