【C】库函数之memcpy

Copy block of memory

# include <string.h>
void * memcpy(void * dest, const void * src, int count);

  Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.

  上述内容是C++官网对memcpy函数的介绍,可以看出memcpy函数从源src所指的内存地址的起始位置开始复制count个字节到目标dest所指的内存地址的起始位置中。

  接下来给出实现memcpy函数的源代码:

#define _CRT_SECURE_NO_WARNINGS 1

/*
* Copyright (c) 2018, code farmer from sust
* All rights reserved.
*
* 文件名称:MyMemcpy.c
* 功能:从源src所指的内存地址的起始位置开始复制count个字节到目标dest所指的内存地址的起始位置中
*
* 当前版本:V1.0
* 作者:sustzc
* 完成日期:2018年4月22日11:16:02
*/

# include <stdio.h>
# include <assert.h>

/*
*	函数名称:MyMemcpy
*
*	函数功能:从src所指向的位置开始复制count个字节到dest所指向的位置
*
*	入口参数:dest, src, count
*
*	出口参数:ret
*
*	返回类型:void *
*/

void * MyMemcpy(void * dest, const void * src, int count)
{
	void * ret = dest;

	assert((NULL != dest) && (NULL != src));

	while(count--)
	{
		*(char *)dest = *(const char *)src;
		dest = (char *)dest + 1;
		src = (const char *)src + 1;
	}

	return ret;
}

int main(void)
{
	char str1[10] = "abc";
	char str2[10] = "def";
	char * ret = NULL;

	printf("str1: %s\n", str1);
	printf("str2: %s\n", str2);

	ret = MyMemcpy(str1, str2, 2);

	printf("memory copy after, str1: %s\n", ret);

	return 0;
}	

输出结果


猜你喜欢

转载自blog.csdn.net/sustzc/article/details/80237835
今日推荐