关闭

不调用C/C++的字符串库函数,请编写函数strcpy

标签: strcpyc++笔试
1889人阅读 评论(2) 收藏 举报
分类:

已知strcpy函数的原型是

       char *strcpy(char *strDest, const char *strSrc);

       其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数 strcpy

char *strcpy(char *strDest, const char *strSrc)

{

    assert((NULL!=strDest) && (NULL!=strSrc));    // 2分

    char *address = strDest;                                          // 2分

    while( (*address++ = * strSrc++) != '\0' )         // 2分

              NULL ;

    return strDest;                                                  // 2分

}

首先是断言的使用,我自己习惯了直接用if判断两个是否为空,然后也没有做异常处理。其次是在内部重新定义一个新指针等于strDest,这样当返回strDest的时候,指针不是指向最后一个\0字符了。细节啊,while( (*strDest++ = * strSrc++) != '\0' )这里其实很多人看不出来,把最后的\0也拷贝过来了,这也是必须的。关于NULL!=strDest这个NULL最好放在前面的习惯,这个参考C++编程规范吧,个人习惯。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场