字符串笔试面试题

1、实现strcpy函数

char *strcpy(char *destination, const char *source) 
{ 
    assert(destination!=NULL&&source!=NULL);
    char* target = destinaton;
    while(*destinaton++=*source++); 
    return target ; 
}

2、实现memcpy函数

void *memcopy(void *dest,const void *src,size_t count)
{
    char *pDest=(char *)(dest);
    const char *pSrc=(const char *)(src);
    assert(dest!=NULL&&src!=NULL);

    //目的地址和源地址重叠,从源地址的末尾方向开始拷贝
     if( pDest>pSrc && pDest<pSrc+count )
    {
        pDest = pDest + count-1;
        pSrc = pSrc + count-1;
        while(count--){
            *pDest-- = *pSrc--;
        }
    }
    //目的地址和源地址不重叠,从源地址的开始方向拷贝
    else
    {
        while(count--){
             *pDest++ = *pSrc++;
        }
    }

    return pDest;
}

3、实现strcmp函数

int strcmp(const char *str1, const char *str2)
{
   assert(str1!=0&&str2!=0);
   while(*str1 == *str2 &&*str1 != '/0') str1++,str2++;
       if(*str1 > *str2)
       return 1;
       else if(*str1 == *str2)
       return 0;
   return -1;
}

4、实现strcat函数

char *strcat(char *dest, const char *src)
{
    char *tmp = dest;
    while (*dest)
        dest++;
    while ((*dest++ = *src++) != '\0');
    return tmp;
}

  

 

 

 

 

posted @ 2015-10-19 10:51  muloulan  阅读(168)  评论(2编辑  收藏  举报