strcpy手写——面试

#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]!='';++i){//直接使用字面常量(如本例中的0)会减少程序的可维护性
        to[i]=from[i];
    }
    return to;//return 0;,说明答题者没有掌握异常机制。调用者有可能忘记检查返回值,调用者还可能无法检查返回值
}

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

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

原文地址:https://www.cnblogs.com/huhuuu/p/3448599.html