C - 为什么我的缓冲区打印不正确? [英] C - Why is my buffer not printing properly?

查看:192
本文介绍了C - 为什么我的缓冲区打印不正确?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个对象,Header和DF。
可以说

header = CCCCCC7E





DF = 01020304

不应该缓冲区的值是 CCCCCC7E01020304

由于某些原因,当我印刷它时,我得到了:

$ p $ 7EFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCC00FFFF
FFCC00000000000004030201FFFFFF8967341200000000



这就是我的印刷方式:

  for(int i = 0; i< sizeof(buffer); i ++)
{printf(%02X,buffer [i]); }

这是代码:

  struct头部标题; 
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; //真实值:NULL
DF.Result = 0x1234; //真实值:NULL
DF.Size = 0x6789; //真实值:NULL

memcpy(buffer,& header,sizeof(Header));
memcpy(buffer + sizeof(Header),& DF,sizeof(Data_Format));


解决方案

想法,但有一点需要做。



在应对缓冲区之前始终执行memset。

  memset(buffer,0,sizeof(buffer))

你得到垃圾。


I have two objects, Header, and DF. lets say

header = CCCCCC7E

and

DF = 01020304,

shouldnt the value of the buffer be CCCCCC7E01020304?

for some reason when i printed it i got:

7EFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCCFFFFFFCC00FFFF FFCC00000000000004030201FFFFFF8967341200000000

this is how i printed it:

for (int i = 0; i < sizeof(buffer); i++)
{ printf("%02X", buffer[i]); }

this is the code:

    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));

解决方案

From the partial code given it doesn't give much idea but Some point need to do.

Do a memset always before coping to the buffer.

memset(buffer, 0, sizeof(buffer)) 

This will prevent you to get the junk.

这篇关于C - 为什么我的缓冲区打印不正确?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆