mempcpy、stpcpy和stpncpy的简介

来源:互联网 发布:淘宝女装店铺图片 编辑:程序博客网 时间:2024/05/23 01:39

mempcpy、stpcpy和stpncpy其实功能和memcpy、strcpy、strncpy的功能一样,区别在于前者返回的是复制之后的末尾地址,后者返回的是复制之后的起始地址。

头文件:string.h

函数名:void *mempcpy(void *dest, const void *src, size_t len);

功能:复制src的数据直到指定的字节数据(len)已经被复制完全到dest里面,返回的地址为dest随后的那一个字节

附上glibc-2.26里的mempcpy的原码:

/* Copy memory to memory until the specified number of bytes
   has been copied, return pointer to following byte.
   Overlap is NOT handled correctly. */

void *MEMPCPY (void *dest, const void *src, size_t len)
{
  return memcpy (dest, src, len) + len;
}

函数名:char *stpcpy(char *dest, const char *src);

功能:复制src的数据到dest所指的地址处,返回dest里的NULL处。

附上glibc-2.26里的stpcpy的原码:

/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST.  */
char *STPCPY (char *dest, const char *src)
{
  size_t len = strlen (src);
  return memcpy (dest, src, len + 1) + len;
}


函数名:char *stpncpy(char *dest, const char *src, size_t n);

功能:复制src的数据到dest所指的地址处,返回dest里的NULL处或者是dest里的n+1处地址。

附上glibc-2.26里的stpncpy的原码:

/* Copy no more than N characters of SRC to DEST, returning the address of
   the terminating '\0' in DEST, if any, or else DEST + N.  */
char *STPNCPY (char *dest, const char *src, size_t n)
{
  size_t size = __strnlen (src, n);
  memcpy (dest, src, size);
  dest += size;
  if (size == n)
    return dest;
  return memset (dest, '\0', n - size);
}



原创粉丝点击