【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中

相关推荐
chuan.bai39 分钟前
Java RAG 实战(第 11 篇):RAG 知识工作台网页
java·开发语言·人工智能
离陌在学C#3 小时前
C# 事件(Event)详解:从概念到实战
开发语言·c#
Terra.K3 小时前
Java异常学习[特殊字符]
java·开发语言·学习
葡萄城技术团队5 小时前
InfluxDB 2\.x 深度解析:核心架构、Flux 函数与制造业落地指南(三)
java·开发语言·架构
counting money5 小时前
Java IO流详解:从InputStream到文件操作实战
java·开发语言·python
wuyk5555 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
峥无6 小时前
从0到1手撕红黑树:封装实现 my_map 与 my_set(SGI-STL 源码级深度解析)
开发语言·c++·笔记·算法·stl
波特率1152006 小时前
C++新特性---属性说明符与标准属性
开发语言·c++
程序员小八7776 小时前
上海百度B端java后端日常实习一面
java·开发语言
wp123_16 小时前
IPX8 防水 Type‑C连接器:安费诺 124018792112A 与 TONEVEE TY48087‑24A 技术梳理
c语言·开发语言