调试中遇到一个奇怪的问题。定义了一个结构体变量,初始化的时候结构体变量的某一个元素总被前一个元素的赋值改写。代码如下:
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同样第一个值也会被改写。这是什么问题,各位大侠帮忙分析一下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>