函数实现:
信息来自RHEL,man page:
MEMCPY(3) Linux Programmer's Manual MEMCPY(3)
NAME
memcpy - copy memory area
SYNOPSIS
#include <string.h>
void *memcpy(void *dest, const void *src, size_t n);
DESCRIPTION
The memcpy() function copies n bytes from memory area src to memory
area dest. The memory areas must not overlap. Use memmove(3) if the
memory areas do overlap.
RETURN VALUE
The memcpy() function returns a pointer to dest.
memcpy()函数实现:
0.函数原型:
#include <string.h>
void *memcpy(void *dest, const void *src, size_t n);
1.参数:
src:指向源内存指针。
dest:指向目标内存指针。
n:拷贝字节数
2.返回值:
返回一个目标内存区的指针dest
3.功能描述:
memcpy函数将src指针指向的内存区的前n个字节数据拷贝到dest指向的内存区内。但是要求src和dest指向区域不能重叠,否则返回结果将是未定义的。
4.实现:
void *my_memcpy(void *dest, const void *src, size_t n)
{
void *result = dest;
//参数判断
if(NULL == dest || NULL == src || 0 > n){
fprintf(stderr, "error\n");
return NULL;
}
//循环拷贝直到第n个值
while(--n){
*(char *)dest = *(char *)src;
dest = (char *)dest + 1;
src = (char *)src + 1;
}
return result;
}
信息来自RHEL,man page:
MEMCCPY(3) Linux Programmer's Manual MEMCCPY(3)
NAME
memccpy - copy memory area
SYNOPSIS
#include <string.h>
void *memccpy(void *dest, const void *src, int c, size_t n);
DESCRIPTION
The memccpy() function copies no more than n bytes from memory area src to memory area dest, stopping when the
character c is found.
If the memory areas overlap, the results are undefined.
RETURN VALUE
The memccpy() function returns a pointer to the next character in dest after c, or NULL if c was not found in
the first n characters of src.
memccpy()函数实现:
0.函数原型:
#include <string.h>
void *memccpy(void *dest, const void *src, int c, size_t n);
1.参数:
src:指向源内存指针。
dest:指向目标内存指针。
n:拷贝字节数。
c:指定字符。
2.返回值:
memccpy()如果在src的前n个字节中找到字符c,函数将返回一个指向dest中字符c之后的第一个字符的指针。如果没找到将返回NULL,同时拷贝结束。
3.功能描述:
memccpy()函数实现将src指针指向第二内存区的前n个字节的内容拷贝到dest指向的内存区,但是如果在src的前n字节中招到了字符c,将只拷贝c和之前的字符,并且返回指向dest中刚拷贝字符c之后的第一个字符的指针,否则返回NULL。
4.实现:
void *my_memccpy(void *dest, const void *src, int c, size_t n)
{
void *result = NULL ;
char *dest_func = (char *)dest;
char *src_func = (char *)src ;
while(NULL == dest_func || NULL == src_func || 0 > n){
fprintf(stderr, "error\n");
return NULL;
}
while(n--){
*dest_func = *src_func;
dest_func++;
if(c == *src_func){
break;
}
src_func++;
}
if(0 < n){
result = dest_func;
}else{
result = NULL;
}
return result;
}
=============文章结束==============
小菜总结,如有不当,欢迎批评!