strcpy()、strncpy()、memcpy()区别

1.strcpy()函数
函数原型:char * strcpy ( char * destination, const char * source );
strcpy把source 所指向以’\0’结尾的字符串复制到destination所指的数组中,返回指向destination的指针。
当sizeof(destination)>=sizeof(source)时,拷贝正确,并在dest字符串后面加入’\0’;
当sizeof(destination)<sizeof(source)时,拷贝出错。

2.strncpy()函数
函数原型:char * strncpy(char * destination, const char * source, size_t num);
strncpy把source所指向以’\0’结尾的字符串的前n个字符复制到destination所指的数组中,返回指向destination的指针。
当num>=sizeof(source)时,拷贝正确,并在dest字符串后面加入’\0’;
当num<sizeof(source)时,只拷贝source前n-1个字符串到destination,不会为destination字符串后面加入’\0’;

3.memcpy()函数
函数原型:void * memcpy(void *destination, const void *source, size_t num);
由source指向地址为起始地址的连续num个字节的数据复制到以destination指向地址为起始地址的空间内。
注意:

#include <iostream>
using namespace std;
void * memcpy(void *destination, const void *source, size_t num) {
	char *dst = (char *) destination;
	char *src = (char *)source;
	if (src == NULL && dst == NULL) {
		return NULL;
	}
	if (dst > src && dst < src + num) {
		dst = dst + num - 1;
		src = src + num - 1;
		while (num--) {
			*dst-- = *src--;
		}
	}
	else {
		while (num--) {
			*dst++ = *src++;
		}
	}

	return destination;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值