金山面试题:不用可函数实现字符串的拷贝,请写出完整的代码

string  str1,str2; 请将str2 内容拷贝到str1里,不调用库函数实现
 
方案一:
char* MyStrCpy(char *sz1, const char *sz2)
{
    if (!(sz1 && sz2))
        return NULL;
    char *szTmp = sz1;
    while (*sz1++ = *sz2++);
    *sz1 = 0;
    return szTmp;
}
方案二:
char* MyStrCpy(char* pDest , char* pSource)
{

        if(pSource)
        {
                int strlength = strlen(pSource);
                pDest = (char*)malloc(sizeof(char)*strlength);
                char* pTemp= pSource;
                char* pTempDest = pDest;
                while((*pTemp)!='\0')
                {
                        *pTempDest = *pTemp;
                        pTempDest++;
                        pTemp++;
                }
                *pTempDest = '\0';
        }
        return pDest;
}
 
判断一个32位整型数是否是2的n次幂
解决办法:
#define ZERO 0
bool is2n(unsigned int  iValue)
{

    if( ZERO == iValue)
       return false;   
    else
       return (ZERO == ((iValue) & (iValue - 1))) ;
}