结构体定义及使用遇到一个奇怪的问题,求助。谢谢!

2019-07-21 01:25发布

调试中遇到一个奇怪的问题。定义了一个结构体变量,初始化的时候结构体变量的某一个元素总被前一个元素的赋值改写。代码如下:
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] = '';  
DataSendToServer.PassResult[33] = '';
DataSendToServer.PassType = '0';  
DataSendToServer.alarmmark = '0';
DataSendToServer.alarmtime[20] = '';
DataSendToServer.powerinf[4] = '';   //这个赋值语句改写了LaneNo[0]的值。
DataSendToServer.GUID[37] = '';

上面这个情况每次都会出现。我试着改变了结构体定义是各元素的排列顺序。把lenght[4]放到了LaneNo的前面。每次写给lenght赋值的时候,LaneNo同样第一个值也会被改写。这是什么问题,各位大侠帮忙分析一下,谢谢!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。