我有两个对象,Header 和 DF。 让我们说
header = CCCCCC7E
和
DF = 01020304
,
缓冲区的值不应该是CCCCCC7E01020304
吗?
出于某种原因,当我打印它时,我得到:
7EFFFFFCCFFFFFFFCCFFFFFFFCCFFFFFFFCCFFFFFFFCCFFFFFFFCCFFFFFFFCCFFFFFFFCCFFFFFFFCC00FFFF
FFCC00000000000004030201FFFFFF8967341200000000
这就是我打印它的方式:
for (int i = 0; i < sizeof(buffer); i++)
{ printf("%02X", buffer[i]); }
这是代码:
struct Header header;
struct Data_Format DF;
unsigned char buffer[TOTAL_SIZE];
header.Start = 0x7E;
header.Options = 0x00;
header.PacketLength = 0x00;
header.VCP = 0x00;
header.Reserved = 0x00;
header.Return = 0x00;
DF.Address = 0x01020304; //real value: NULL
DF.Result = 0x1234; //real value: NULL
DF.Size = 0x6789; //real value: NULL
memcpy(buffer,&header, sizeof(Header));
memcpy(buffer+sizeof(Header), &DF, sizeof(Data_Format));
最佳答案
从给出的部分代码来看,它没有给出太多想法,但有些地方需要做。
在处理缓冲区之前始终执行 memset。
memset(buffer, 0, sizeof(buffer))
这将阻止您获得垃圾。
关于C - 为什么我的缓冲区打印不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25760847/