雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

strcpy手写——面试

Posted on 2013-11-28 22:24  huhuuu  阅读(796)  评论(0编辑  收藏  举报
#include<stdio.h>
#include<string.h>

char s[123]={"1233232"},str[123];

char* strcpy(char *to,char *from){
    if(NULL==to||NULL==from) //不检查指针的有效性,说明答题者不注重代码的健壮性。
        throw "point error"; //应该以抛出异常来代替返回值,这样可以减轻调用者的负担、使错误不会被忽略、增强程序的可维护性。
    int i;
    for(i=0;from[i]!='\0';++i){//直接使用字面常量(如本例中的0)会减少程序的可维护性
        to[i]=from[i];
    }
    return to;//return 0;,说明答题者没有掌握异常机制。调用者有可能忘记检查返回值,调用者还可能无法检查返回值
}

int main(){
    printf("%s\n",s);
    strcpy(str,s);
    printf("%s\n",str);
}

看似简单实则暗藏杀机!!!