算法----字符串拷贝

功能要求:把src 所指由NULL 结束的字符串复制到dest 所指的数组中。
分析:如果编写一个标准strcpy 函数的总分值为10,下面给出几个不同得分的答案:

//得2 分
void strcpy( char *strDest, char strSrc )
{
while( (
strDest++ = * strSrc++) != '/0' );
}

//得4 分
void strcpy( char *strDest, const char strSrc )
{
//将源字符串加const,表明其为输入参数,加2 分
while( (
strDest++ = * strSrc++) != '/0' );
}

//得7 分
void strcpy(char *strDest, const char strSrc)
{
//对源地址和目的地址加非0 断言,加3 分
assert( (strDest != NULL) && (strSrc != NULL) );
while( (
strDest++ = * strSrc++) != '/0' );
}

//得9 分
//为了实现链式操作,将目的地址返回,加2 分!
char * strcpy( char *strDest, const char *strSrc )
{
assert( (strDest != NULL) && (strSrc != NULL) );
char address = strDest;
while( (
strDest++ = * strSrc++) != '/0' );
return address;
}

//得10 分,基本上所有的情况,都考虑到了
//如果有考虑到源目所指区域有重叠的情况,加1 分!
char * strcpy( char *strDest, const char *strSrc )
{
if(strDest == strSrc) { return strDest; }
assert( (strDest != NULL) && (strSrc != NULL) );
char address = strDest;
while( (
strDest++ = * strSrc++) != '/0' );
return address;
}

posted @ 2015-08-22 14:09  nolonely  阅读(295)  评论(0编辑  收藏  举报