怎的将一个整数和字符串拷贝到内存,再将他们分别读取出来
怎样将一个整数和字符串拷贝到内存,再将他们分别读取出来?
现在有个void*指针,如何将一个整数和字符串拷贝到这个void*指向的内存,再将他们分别读取出来?
------解决方案--------------------
memcpy memmove
。
。
------解决方案--------------------
------解决方案--------------------
现在有个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;