1 strcpy函数 1.1 函数原型 char strcpy(char dest, const char src); 1.2 函数功能 strcpy是一种C语言的标准库函数,strcpy把含有’\0’结束符的字符串复制到另一个地址空间,返回值的类型为char。 1.3 说明 src和dest所指内存区域不可以重叠,并且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针。
2 memcpy函数 2.1 函数原型 void *memcpy(void *str1, const void *str2, size_t n); 2.2 函数功能 C 库函数memcpy从存储区str2复制n个字节到存储区str1。
3 两个函数的区别 3.1 复制的内容 strcpy只能复制字符串,而memcpy是内存拷贝,可以复制任意内容,例如:字符数组、整形、结构体、类等。 3.2 复制的方法不同 strcpy不需要指定长度,它遇到被复制字符串结束符‘\0’才结束,所以容易溢出。memcpy则是根据其第三个参数决定复制的长度。 3.3 用途不同 通常复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。
4 函数源码实现 4.1 模拟实现strcpy函数
char* my_strcpy(char* dest, const char* src)
{
if(src == NULL || dest == NULL)
{
return NULL;
}
char *str = dest;
while(*src != '\0')
{
*dest++ = *src++;
}
return str;
}
4.2 模拟实现memcpy函数
void *my_memcpy(void* dest, const void* src, size_t size)
{
if(dest == NULL || src == NULL)
{
return NULL;
}
char *tempdest = (char*)dest;
char *tempsrc = (char*)src;
while(size > 0)
{
*tempdest++ = *tempsrc++;
size--;
}
return dest;
}
|