您的位置:首页 > 其它

memcpy,memset,memmove的使用与实现

2016-10-07 10:35 363 查看
void *memcpy( void *dest, const void *src,
size_t
count
);

返回值:

memcpy returns the value of
dest.

参数:
dest
New buffer
src
Buffer to copy from
count
Number of characters to copy
Remarks
The memcpy function copies count bytes of src to
dest. If the source and destination overlap, this function does not ensure that the original source bytes in the overlapping region are copied before being overwritten. Use
memmove to handle overlapping regions.

实现:
void *my_memcpy(void *dst, const void *src, size_t count)
{
void *ret = dst;
char *pDst = (char *)dst;
char *pSrc = (char *)src;
while (count--) {
*pDst++ = *pSrc++;
}
return ret;
}
void *memset( void *dest, int c, size_t
count );

返回值:
memset returns the value of dest.

参数:
dest
Pointer to destination
c
Character to set
count
Number of characters
Remarks
The memset function sets the first count bytes of
dest to the character c.

实现:

void *my_memset(void *dst, int val, size_t count)
{
void *ret = dst;
char *pDst = (char *)dst;
while (count--) {
*pDst++ = (char)val;
}
return ret;
}

void *memmove( void *dest, const void *src, size_t
count );

返回值:
memmove returns the value of dest.

参数:
dest
Destination object
src
Source object
count
Number of bytes of characters to copy
Remarks
The memmove function copies count bytes of characters from
src to dest. If some regions of the source area and the destination overlap,
memmove ensures that the original source bytes in the overlapping region are copied before being overwritten.

实现:

void *my_memmove(void *dst, const void *src, int count)
{
void *ret = dst;
char *pDst = (char *)dst;
char *pSrc = (char *)src;
if (pDst > pSrc || pDst < pSrc + count) {
while (count--) {
*(pDst + count - 1) = *(pSrc + count - 1);
}
}
else {
while (count--) {
*pDst++ = *pSrc++;
}
}
return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: