strncpy()、 strcpy()、 strcmp 、strdup、 strlen函数的实现

 

1.strncpy() 函数的实现    
man查询的:
char *strncpy(char *dest,char *src,int n)
{
     int i;
     for(i=0;i<n && src[i]!='\0';i++)
          dest[i] = src[i];
     for(;i<n;i++)
          dest[i] = '\0';
     return dest;
}
网上找的:
char *strncpy(char *dest,const char *src,int n)
{
   int i=0;
   char *ret=dest;
   while(*src != '\0 ' && i <n)
    {
       *dest++ = *src++;
       i++;
     }
   return  ret;  
 }

 

2.strcpy() 函数的实现 

static char * strcpy(char *dest, const char *src)
{
  assert(dest != NULL && src != NULL);
  char *ret = dest;
  while ((*dest++ = *src++) != '\0');
  return ret;
}

 

3.strcmp 函数的实现   
int strcmp(const char* strLeft,const char * strRight)
{
      for(;*strLeft==*strRight;strLeft++,strRight++)      
        {
            if(*strLeft == '\0') 
                   return 0;
         }
      return ((*strLeft<*strRight)? -1,1);
}

 

4.strdup()函数的实现    
char * strdup(char *)  
{
   char * strNew;
   assert(str != NULL);
   strNew = (char *)malloc(strlen(str)+1);
   strcpy(strNew,str);
   return strNew;
}    

 

5.strlen函数的实现
方法一:(标准些)
int my_strlen(const char *strDest)
{
  assert(NULL != strDest);
  if('\0' == *strDest)
        return 0;
  else
        return(1+my_strlen(++strDest));
 }
方法二:
int strlen(char s[])  
{
  int i;
  i =0;
  while(s[i] != '\0')     ++i;
  return i;

6.memcpy函数实现

typedef unsigned int size_t; 
void * memcpy ( void *dest, const void *src, size_t num ) 
{    
    void* ret = dest; 
    while (num--) 
    { 
        *(char*)dest = *(char*)src; 
        dest = (char*)dest + 1; 
        src = (char*)src + 1;                 
     } 
     
    return ret; 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值