#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); }
看似简单实则暗藏杀机!!!