透过strcpy()看问题
转载请注明原文来自:http://blog.csdn.net/lizhiliang06/article/details/8649336
小明最近写程序发现经常会出现一些莫名其妙的错误,
就过来问大明,说程序总是出现问题的,而且莫名其妙的就挂在了strcpy这里了,
郁闷了挺久的了,于是刚毕业不久的小明还是不太好意思的来问了大明,
大明看了小明的代码,发现了一些问题,这些问题是平时写程序不太注意时经常发生的哦,
现在就展开来让大家一起看看
/*请写出strcpy()函数原型*//**注意1*/void strcpy(char *dest, char *source){while(*source != '\0') *dest++ = *source++;}/* * 注意2 加上const,防止参数被改变 */void strcpy(char *dest, const char *source){while(*source != '\0') *dest++ = *source++;}/* * 好的strcpy应该如下 */void strcpy(char *dest, const char *source){assert((dest != NULL) && (source != NULL));const char *temp_src = source;char *temp_dest = dest;//防止过程中改变dest的地址while(*temp_src != '\0') *temp_dest++ = *temp_src++;}