关闭

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

标签: strcpyc++笔试
1667人阅读 评论(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网站的观点或立场
    个人资料
    • 访问:28155次
    • 积分:770
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:0篇
    • 译文:0篇
    • 评论:30条
    联系方式

    公司:深信服科技股份有限公司


    所在地:中国-广东省-深圳市


    QQ交流群:165650716


    文章分类