- 论坛徽章:
- 0
|
刚才看了讨论memcpy的帖子,于是把glibc的代码找出来看了看
顺便看了看strcpy的实现,顿时就晕菜了
想请教大家strcpy是怎么实现的,如果自己用标准C写一个,应该如何写?
应该注意哪些问题?
谢谢了先
- #include <stddef.h>
- 20 #include <string.h>
- 21 #include <memcopy.h>
- 22 #include <bp-checks.h>
- 23
- 24 #undef strcpy
- 25
- 26 /* Copy SRC to DEST. */
- 27 char *
- 28 strcpy (dest, src)
- 29 char *dest;
- 30 const char *src;
- 31 {
- 32 reg_char c;
- 33 char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src);
- 34 const ptrdiff_t off = CHECK_BOUNDS_LOW (dest) - s - 1;
- 35 size_t n;
- 36
- 37 do
- 38 {
- 39 c = *s++;
- 40 s[off] = c;
- 41 }
- 42 while (c != '\0');
- 43
- 44 n = s - src;
- 45 (void) CHECK_BOUNDS_HIGH (src + n);
- 46 (void) CHECK_BOUNDS_HIGH (dest + n);
- 47
- 48 return dest;
- 49 }
- 50 libc_hidden_builtin_def (strcpy)
复制代码 |
|