当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 memcpy()用法及代码示例


memcpy() 函数

memcpy() 是一个库函数,它在“string.h”头文件中声明——用于将一块内存从一个位置复制到另一个位置(也可以认为是将一个字符串复制到另一个位置) .

memcpy() 的语法:

    memcpy(void*str1, const void* str2, size_t n);

它复制n字节str2str1

示例 1)将一个字符串复制到另一个(一个字符串的所有字节都复制到另一个)

#include <stdio.h>
#include <string.h>
#define MAX_CHAR 50

int main(void) {
	char str1[MAX_CHAR] = "Hello World!";
	char str2[MAX_CHAR] = "Nothing is impossible";

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

	//copying all bytes of str2 to str1
	memcpy(str1, str2, strlen(str2));

	printf("After copying...\n");
	printf("str1:%s\n", str1);
	printf("str2:%s\n", str2);
	
	return 0;
}

输出

Before copying...
str1:Hello World!
str2:Nothing is impossible
After copying...
str1:Nothing is impossible
str2:Nothing is impossible

示例 2) 将一些字节从一个字节数组复制到另一个数组

#include <stdio.h>
#include <string.h>
#define MAXLEN 11

//function to print array 
void printArray(unsigned char str[], int length){
	int i;
	for(i=0; i<length;i++)
		printf("%02X ", str[i]);
	printf("\n");
}

int main(void) {
	unsigned char arr1[MAXLEN] = {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0x95};
	unsigned char arr2[MAXLEN] = {0};

	printf("Before copying...\n");
	printf("arr1:"); printArray(arr1, strlen(arr1));
	printf("arr2:"); printArray(arr2, strlen(arr2));

	//copying 5 bytes of arr1 to arr2
	memcpy(arr2, arr1, 5);
	printf("After copying...\n");
	printf("arr1:"); printArray(arr1, strlen(arr1));
	printf("arr2:"); printArray(arr2, strlen(arr2));
	
	return 0;
}

相关用法


注:本文由纯净天空筛选整理自 memcpy() function in C with Example。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。