首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小弟初学者,问求大侠帮助

2012-05-27 
小弟菜鸟,急问求大侠帮助C/C++ code//废话不多说,//定义下面一段代码typedef struct _ST_EVTLOG_DATA{ucha

小弟菜鸟,急问求大侠帮助

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]; }
[解决办法]
探讨

是的啊,data占用了12个字节,那lenth就在第13字节了喽?


pt_evtlog_data->data=log_time[i]; //这里应该怎么向data这段区域写连续的6个字节数据呢?代码怎么写啊?
求教了。

热点排行