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

相关推荐
阳光九叶草LXGZXJ2 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
yyy(十一月限定版)2 小时前
224redfg
c语言
陈卫军老师3 小时前
陈卫军语录全集总结:12句话,一条主线
经验分享·笔记
2601_962885724 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
爱吃奥利奥_wen4 小时前
面向对象三板斧:封装、继承、多态,到底在“装“什么、“承“什么、“变“什么?
开发语言·经验分享·c#
我可能是个假开发4 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
小师兄吃牛肉5 小时前
C语言中的nullptr有必要吗
c语言·c++·算法
mlidongfeng5 小时前
【学习】mKernel 分析
学习
WL学习笔记5 小时前
日期类(C++)
开发语言·c++·日期类实现
谢亮_vipxieliang6 小时前
Go map与结构体的正确使用
开发语言·golang·哈希算法