现在的位置: 首页 > 综合 > 正文

strcpy与memcpy

2013年09月12日 ⁄ 综合 ⁄ 共 712字 ⁄ 字号 评论关闭
char *strncpy(char *dest, const char *src, size_t count);
char *strcpy(char *dest, const char *src)
{
	if((dest == NULL) || (src == NULL))
	{
		return NULL;
	}
	
	char *strDest = dest;
	while(*src != '\0')
	{
		*strDest++ = *src++;
	}
	
	return strDest;
}

void *memmove(void *dest, const void *src, size_t count);
void *memcpy(void *dest, const void *src, size_t count)
{
	//assert(dest != NULL);
	//assert(src != NULL);
	if((dest == NULL) || (src == NULL))
	{
		return NULL;
	}
	char *tmpDest = (char *)dest;
	const char *tmpSrc = (const char *)src;
	//判断是否内存有重叠
	//assert(!(tmpDest < tmpSrc) && ((tmpDest + count) > tmpSrc));
	if((tmpDest < tmpSrc) && ((tmpDest + count) > tmpSrc))
	{
		return NULL;
	}
	//assert(!(tmpSrc < tmpDest) && (tmpSrc + count) > tmpDest));
	if((tmpSrc < tmpDest) && (tmpSrc + count) > tmpDest))
	{
		return NULL;
	}
	while(count--)
	{
		*tmpDest++ = *tmpSrc++;
	}
}

【上篇】
【下篇】

抱歉!评论已关闭.