c语言深入浅出(一)strcpy和memcpy的区别
strcpy和memcpy都是c语言的库函数
strcpy:只用于字符串的复制,当碰到‘\0’就停止了
memcpy:用于这个内存的拷贝,适用于结构体、字符数组、类等
char * strcpy(char * dest, const char * src) // 实现src到dest的复制
{if ((src == NULL) || (dest == NULL)) //判断参数src和dest的有效性{return NULL;}char *strdest = dest; //保存目标字符串的首地址while ((*strDest++ = *strSrc++)!='\0'); //把src字符串的内容复制到dest下return strdest;
}
void *memcpy(void *memTo, const void *memFrom, size_t size)
{if((memTo == NULL) || (memFrom == NULL)) //memTo和memFrom必须有效return NULL;char *tempFrom = (char *)memFrom; //保存memFrom首地址char *tempTo = (char *)memTo; //保存memTo首地址 while(size -- > 0) //循环size次,复制memFrom的值到memTo中*tempTo++ = *tempFrom++ ; return memTo;
}
两者不同之处
- 复制的内容不同:strcpy复制字符串,遇到‘\0’就停止了,memcpy拷贝内存
- 复制方法:strcpy没有指定大小的参数,可能导致内存溢出