函数原型:
errno_t memcpy_s( void *dest, size_t numberOfElements, const void *src, size_t count );
参数:
dest
新的缓冲区。
numberOfElements
目标缓冲区的大小。
src
要复制的缓冲区。
count
字符数。的副本。
测试代码:
// memcpyTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "string" //strlen()需要的头文件
int _tmain(int argc, _TCHAR* argv[])
{
//-----memcpyPchar_Test_Begin-----------------------------
// Populate a2 with squares of integers
char *psourcechar = "aaa";
char *ptargetchar = /*NULL*/new char[6]; //内存拷贝,需要保证target目标有空间,且要保证空间的大小
// Tell memcpy to copy 10 ints (40 bytes)(the size of a1)
memcpy(ptargetchar,psourcechar,sizeof(ptargetchar));
ptargetchar[strlen(psourcechar)]=' ';
printf("%s ", ptargetchar);
printf("
");
//-----memcpyPchar_Test_End-----------------------------
//-----memcpy_Test_Begin-----------------------------
int memcpya1[10], memcpya2[100], i;
// Populate a2 with squares of integers
for (i = 0; i < 100; i++)
{
memcpya2[i] = i*i;
}
// Tell memcpy to copy 10 ints (40 bytes)(the size of a1)
memcpy(memcpya1,memcpya2,sizeof(memcpya1) );
for (i = 0; i < 10; i++)
printf("%d ", memcpya1[i]);
printf("
");
//-----memcpy_Test_End-----------------------------
//-----memcpy_s_Test_Begin-----------------------------
int a1[10], a2[100], j;
errno_t err;
// Populate a2 with squares of integers
for (j = 0; j < 100; j++)
{
a2[j] = j*j;
}
// Tell memcpy_s to copy 10 ints (40 bytes), giving
// the size of the a1 array (also 40 bytes).
err = memcpy_s(a1, sizeof(a1), a2, 10 * sizeof (int) );
if (err)
{
printf("Error executing memcpy_s.
");
}
else
{
for (j = 0; j < 10; j++)
printf("%d ", a1[j]);
}
printf("
");
//-----memcpy_s_Test_End-----------------------------
return 0;
}