//最初级的版本! #include <stdio.h> #include <stdlib.h> #include <assert.h> void my_strcpy(char *dest, const char *src) { while (*src != ‘\0‘) { *dest = *src; dest++; src++; } *dest = *src; } int main() { char arr[10]; const char *p = "abcdef"; my_strcpy(arr, p); printf("%s\n", arr); system("pause"); return 0; } // 缺点:1.没有判断dest,src指向的位置是否为空 2.程序冗长,逻辑不简练 3.dest做程序结束指向最后,没有什么意义! 4.无返回值,不利于链式访问函数。 //满分版 #include <stdio.h> #include <stdlib.h> #include <assert.h> char* my_strcpy(char *dest, const char *src) { assert(dest); //断言,只在debug环境下才能起作用,对程序员调试很有用哦 assert(src); char* ret = NULL; ret = dest; while (*ret++ = *src++) { ; } return dest;//设返回值有利于链式访问:例 strlen(strcpy(dest,stc)); } int main() { char arr[10]; const char *p = "abcdef"; char* ret = NULL; ret=my_strcpy(arr, p); printf("%s\n", ret); system("pause"); return 0; }
原文:http://10918952.blog.51cto.com/10908952/1726621