我想将1个字节的变量复制到相对较大的char数组,然后将其复制回来?我该怎么办?
/* memcpy example */
#include <stdio.h>
#include <string.h>
struct Data {
unsigned char name[40];
int age;
};
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
int main ()
{
uint8_t myval = 8;
uint8_t myval_2 = 8;
Data mypass;
memcpy(&mypass.name, &myval, sizeof(uint8_t));
memcpy(&mypass.name+1, &myval_2, sizeof(uint8_t));
uint8_t* myvalnew = nullptr;
uint8_t* myvalnew_2 = nullptr;
memcpy(myvalnew, (uint8_t*)&mypass.name, sizeof(uint8_t));
memcpy(myvalnew_2, (uint8_t*)&mypass.name+1, sizeof(uint8_t));
return 0;
}
但是我遇到错误。
&mypass.name
创建一个指向名称数组的指针,您想要一个指向数组第一个元素的指针,您可以简单地使用mypass.name
或&mypass.name[0]
。 memcpy
在这里是不必要的,因为您可以简单地分配元素:
mypass.name[0] = myval;
mypass.name[1] = myval_2;
您的第二组memcpy
将失败,因为您的myvalnew
指针为空,我不确定您要在这里实现什么。