初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2015-9-30
- 在线时间
- 2 小时
|
5金钱
调试中遇到一个奇怪的问题。定义了一个结构体变量,初始化的时候结构体变量的某一个元素总被前一个元素的赋值改写。代码如下:
typedef struct
{
uchar mark;
uchar TID;
uchar PassType;
uchar encrypmark;
uchar lenght[4];
uchar powerinf[4];
uchar LaneNo[9];
uchar PassResult[33];
uchar alarmmark;
uchar alarmtime[20];
uchar GUID[37];
}LANEDATASEND;
LANEDATASEND DataSendToServer;
初始化赋值语句如下:
DataSendToServer.mark = '$';
DataSendToServer.TID = '1';
DataSendToServer.encrypmark = '1';
strcpy(DataSendToServer.LaneNo, "12345678"); //执行该语句后LaneNo可正常赋值,但是在后面会被无缘无故改写
DataSendToServer.lenght[4] = '\0';
DataSendToServer.PassResult[33] = '\0';
DataSendToServer.PassType = '0';
DataSendToServer.alarmmark = '0';
DataSendToServer.alarmtime[20] = '\0';
DataSendToServer.powerinf[4] = '\0'; //这个赋值语句改写了LaneNo[0]的值。
DataSendToServer.GUID[37] = '\0';
上面这个情况每次都会出现。我试着改变了结构体定义是各元素的排列顺序。把lenght[4]放到了LaneNo的前面。每次写给lenght赋值的时候,LaneNo同样第一个值也会被改写。这是什么问题,各位大侠帮忙分析一下,谢谢!
|
最佳答案
查看完整内容[请看2#楼]
楼主数组没学好,数组赋值越界了。DataSendToServer.powerinf[4] = '\0';这样赋值当然会影响后面的LaneNo[0]。powerinf[3]是数组powerinf最后一个成员。
|