小弟菜鸟,急问求大侠帮助
- C/C++ code
//废话不多说,//定义下面一段代码typedef struct _ST_EVTLOG_DATA{ uchar *data; uchar lenth; uchar cs;}*PT_EVTLOG_DATA;PT_EVTLOG_DATA pt_evtlog_data;for(i=0;i<6;i++){ pt_evtlog_data->data=log_time[i]; //这里应该怎么向data这段区域写连续的6个字节数据呢?}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//之后我又调用这段代码for(i=0;i<6;i++){ pt_evtlog_data->data=log_time[i]; }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//最后//我想知道的是,pt_evtlog_data->data里保存完数据的时候(此时保存了12个字节),//lenth的地址是不是在*data之后呢(也就是第13个字节)。[解决办法]
////加上这一句
pt_evtlog_data->data = malloc(sizeof(uchar) * 6);
for(i=0;i<6;i++)
{
pt_evtlog_data->data=log_time[i]; //这里应该怎么向data这段区域写连续的6个字节数据呢?
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//之后我又调用这段代码
for(i=0;i<6;i++)
{
pt_evtlog_data->data=log_time[i];
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//最后
//我想知道的是,pt_evtlog_data->data里保存完数据的时候(此时保存了12个字节),
//lenth的地址是不是在*data之后呢(也就是第13个字节)。
////不是,length始终在data之后
[解决办法]
1、可以使用这样的形式,记得提前new就好了 pt_evtlog_data->data[i+index]=log_time[i]//index表示从第几位写
2、不一定,如果你new了15个字节,只保存了12个字节进去,这个时候lenth的地址就是第16个了
[解决办法]
都在扯什么啊?
data保存的是个指针,在32位系统下就是4个字节,len应该是数据长度
类似这样使用:
pt_evtlog_data = malloc(sizeof (_ST_EVTLOG_DATA))
char szBuffer[64]="hello world ";
pt_evtlog_data ->data =(uchar *)szBuffer;
pt_evtlog_data->lenth = strlen(szBuffer);
[解决办法]
- C/C++ code
typedef struct _ST_EVTLOG_DATA{ uchar *data;//这里data是一个指针{请注意} uchar lenth; uchar cs;}*PT_EVTLOG_DATA;PT_EVTLOG_DATA pt_evtlog_data;for(i=0;i<6;i++){ pt_evtlog_data->data=log_time[i]; //这是修改了data指针本身6次}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//之后我又调用这段代码for(i=0;i<6;i++){ pt_evtlog_data->data=log_time[i]; }
[解决办法]