strcpy与memcpy的区别
1.复制的内容不同:strcpy()只能复制字符串,而memcpy()可以复制任意内容,例如字符数组、整型、结构体、类等。
2.复制的方法不同:strcpy()不指定长度,它遇到被复制字符串结束符”\0”才结束拷贝,所以容易溢出。
memcpy()则是根据其第三个参数决定复制的长度。
3.用途不同:通常在复制字符串时用strcpy(),而需要复制其他类型数据时则一般用memcpy()。
#include <iostream>
#include <assert.h>
usingnamespacestd;
// 为了实现链式操作,将目的地址返回,strcopy()可作为其它函数的参数(实参)
char* strcopy(char* dest,const char* src)
{
assert(dest != NULL && src!= NULL); // 指针安全检查
while ((*dest++ = *src++) != '\0');
return dest;
}
void* memcopy(void* dest,const void* src,size_t cout)
{
assert(dest != NULL && src != NULL); // 指针安全检查
char* pDest = (char *)dest;
char* pSrc = (char *)src;
while(cout--)
{
*pDest++ = *pSrc++;
}
*pDest = '\0';
return dest;
}