几个常用函数的实现strcpy,memcpy,memmove,strcat,strcmp

1.  strcpy

  函数原型:
  char * strcpy(char * strDest,const char * strSrc);
  具体实现:
   char * strcpy(char * strDest,const char * strSrc)
  {
    if(strDest == NULL ||strSrc == NULL)
      throw "Error copy !";
      char *strTemp = strDest;
      while((*strDest++ = *strSrc++) != '\0')
       ;
      return strTemp;
   }

2. strcat

函数原型:
char* strcat(char* strDest, const char* strSrc);
具体实现:
char* strcat(char* strDest, const char* strSrc)
{
	if(strDest == NULL || strSrc == NULL)
		throw "concat Error!";
	char* strTemp = strDest;
	while(*strTemp++ != '\0')
		;
	while((*strTemp++ = *strSrc++) != '\0')
		;
	return strDest;
}


3.strcmp

函数原型:
int strcmp(const char* strDest, const char* strSrc);
具体实现:
int strcmp(const char* strDest, const char* strSrc)
{
	int nRet = 0;
	if(strDest == NULL || strSrc == NULL)
		throw "compare Error!";
	while(!(nRet = (*strDest - *strSrc)) && strSrc) 
	{
		++strDest;
		++strSrc;
	}
	if (nRet > 0)
	{
		nRet = 1;
	}
	else if (nRet < 0)
	{
		nRet = -1;
	}
	return nRet;
}
返回值:
* returns -1 if strDest < strSrc
* returns 0 if strDest == strSrc
* returns +1 if strDest > strSrc


4. memcpy

函数原型:
void *memcpy(void* pvTo, void* pvFrom, size_t size);
具体实现:
void *memcpy(void* pvTo, void* pvFrom, size_t size)
{
	if(pvFrom == NULL || pvTo == NULL)
		throw "memcpy Error!";

	void* pvTempTo = pvTo;
	void* pvTempFrom = pvFrom;
	if (pvFrom < pvTo + size && pvTo < pvFrom + size)
		throw "memcpy Error!";
	
	while(size-- > 0)
	{
		*pvTempTo++ = *pvTempFrom++;
	}

	return pvTo;
}

5. memmove

函数原型:
void* memmove(void* dest, void* source, size_t size);
具体实现:
void* memmove(void* dest, void* source, size_t size)
{
	if (dest == NULL || source == NULL)
		throw "memmove Error!";
	
	void * destTemp = dest;
	if (dest >= (source + size) || source >= (dest + size))
	{
		while(size-- > 0)
			*dest++ = *source++;
	}
	else
	{
		dest += size - 1;
		source += size - 1;
		*dest-- = *source--;
	}
	return destTemp;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值