怎的将一个整数和字符串拷贝到内存,再将他们分别读取出来

怎样将一个整数和字符串拷贝到内存,再将他们分别读取出来?
现在有个void*指针,如何将一个整数和字符串拷贝到这个void*指向的内存,再将他们分别读取出来? 

------解决方案--------------------
memcpy memmove


------解决方案--------------------

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

typedef struct
{
int id;
char name[81];
}elem_t;

int main(int argc, char* argv[])
{
void* addr = malloc(128);
elem_t elem1 = {8051, "C51"};
elem_t elem2;

memcpy(addr, &elem1, sizeof(elem_t));
memcpy(&elem2, addr, sizeof(elem_t));
printf("(%d, %s)\n", elem2.id, elem2.name); 

return 0;
}    

------解决方案--------------------
	int MyInt = 123;
char *MyStr = "helloworld";
int nlen = sizeof(int) + strlen(MyStr) +1;
void *mem = new BYTE[nlen];  //假设你的mem指向足够的内存空间
memset(mem ,0 ,nlen);
// 存放int和str
memcpy((BYTE*)mem  ,&MyInt ,sizeof(MyInt));
memcpy((BYTE*)mem +4,MyStr ,strlen(MyStr)+1);

// 读取int和str
int desInt;
char desStr[20] = {0};
memcpy(&desInt ,mem ,sizeof(int));
memcpy(desStr ,(BYTE*)mem + sizeof(int) ,nlen - sizeof(int));
delete []mem;
cout << desInt << "-" << desStr << endl;