守望

Here we go!

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 6 文章 :: 0 评论 :: 0 Trackbacks
1 /* strlen */
2 int strlen(const char *s)
3 {
4    const char *sx = s;
5    while (*sx++ != '\0')
6       ;/* do nothing */
7    return sx - s;
8 }

1 /* strcpy */
2 char* strcpy(char *dest, const char *src)
3 {
4    char *= dest;
5    while ((*s++ = *src++!= '\0')
6       ;/* do nothing */
7    return dest;
8 }

 1 /* strncpy */
 2 char* strncpy(char *dest, const char *src, int n)
 3 {
 4    char *= dest;
 5    while (n--)
 6    {
 7       if ((*s++ = *src++!= '\0')
 8          src++;
 9       s++;
10    }
11    return dest;
12 }

1 /* memcpy 无法处理address overlapping问题 */
2 void* memcpy(void *dest, const void *src, size_t count)
3 {
4    char *= dest;
5    const char *= src;
6    while (count--)
7       *d++ = *s++;
8    return dest;
9 }

 1 /* memmove
 2  * Unlike memcpy, memmove copy with overlapping area */
 3 void* memmove(void *dest, const void *src, size_t count)
 4 {
 5    char *= dest;
 6    const char *= src;
 7 
 8    if (dest <= src)
 9    {
10       while (count--)
11          *d++ = *src++;
12    }
13    else
14    {
15       d += count;
16       s += count;
17       while (count--)
18          *--= *--s;
19    }
20    return dest;
21 }
posted on 2011-10-22 16:09 winter 阅读(72) 评论(0)  编辑 收藏 引用 所属分类: 字符串