//ptrdiff_t是在stddef.h中定义的 #include <stddef.h> #include <string.h> //这个我也不知道是干啥的,如果知道望指出 #include <memcopy.h> //这个应该是为了防止冲突吧 #undef strcpy /* Copy SRC to DEST. */ //这里把src设置为const就是为了防止修改src char * strcpy(dest, src) char *dest; const char *src; { //定义一个临时变量用于拷贝字符串 char c; //因为src是个常量不能作为左值 char *s = (char *)src; //获得dest和src地址的偏移量 const ptrdiff_t off = dest - s - 1; do { //获取src的第一个字符,同时移动了s指针,off多减了一是因为这里先位移了 c = *s++; //通过s[off]获取dest的地址并赋值 s[off] = c; //读到'\0'为止 } while (c != '\0'); return dest; } //这个好像是定义内部符号别名,要是有错请指出 libc_hidden_builtin_def(strcpy)
读glibc的strcpy代码
猜你喜欢
转载自www.cnblogs.com/ZhanKing/p/10217216.html
今日推荐
周排行