strcpy和strcnpy函数详解

1.了解strcpy和strcpy

由图可知,返回值是char*

头文件为#include <string.h>

注意:strcpy只用于字符串复制,遇到‘\0’时停止,还会复制字符串的结束符'\0'; 所以源字符串必须以’\0’结束,也会将源字符串的’\0’拷贝到目标空间

2.strcpy和strncpy函数用法

strcpy函数就是把一个字符串复制粘贴到另一个字符串上,也就是把const char * source复制粘贴到char * destination,因为char*source不需要改变,所以可以加一个const修饰。第二张图片我们可以看到strncpy函数比strcpy多了一个size_t num,这是你想要复制的字符数。

3.strcpy和strncpy使用

这是运用strcpy函数把arr2中的字符串拷贝到arr1中的运用。

注意!!!:在使用strcpy函数时,char * destination必须足够大,否则可能会造成缓冲溢出的错误情况。

当出现这种情况时,我们可以考虑用strcnpy函数

这样我们就可以控制我们需要复制的字符串到arr1上面了。 

4.strcpy和strncpy函数实现

strcpy函数实现:

char* my_strcpy(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);
	char* ret = dest;
	while (*dest++ = *src++)//对dest和src两个字符串的第一个字母开始逐个复制粘贴,直到遇到'\0'
	{
		;
	}
	*dest = *src;
	return ret;
}

int main()
{
	char arr1[] = "hellooo";
	char arr2[] = "world";
	strcpy(arr1, arr2);
	printf("%s", arr1);
	return 0;
}

在传参过程中,为了避免传空指针,所以用assert来避免一下。

strncpy函数实现:

char* my_strncpy(char* dest, const char* src,int n)
{
	assert(dest != NULL && src != NULL);
	char* ret = dest;//保留dest的起始地址,strncpy需要返回字符串的起始地址
	while (n)
	{
		*dest = *src;
		*dest++;
		*src++;
		n--;
	}
	return ret;
}


int main()
{
	char arr1[] = "hello";
	char arr2[] = "ppp";
	my_strncpy(arr1, arr2,3);
	printf("%s", arr1);

	return 0;
}

注意!!!:这两个函数的实现,都需要返回这个字符串的起始地址 。

对于复制的字符串来说就不需要改变,所以可以加const来修饰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值