文章目录

char 数组长度不能存储’\0’,导致 后面的字符贴上来了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdio.h>
using namespace std;


typedef unsigned char U8;

typedef struct stInitMode {
char chModeStartTime[15]; // IN,模式发生时间(YYYYMMDDhh24mmss);
U8 ucModeID; // IN,模式ID (参见第4分册“3.2.11 降级运营模式ID”)
}_stInitMode;


struct stInitReaderInfo_CD
{
char chLineNumber[3]; // IN,线路编码
char chStationNumber[3]; // IN,车站编码
char chEquipType[3]; // IN,设备类型
char chEquipNumber[4]; // IN,3bytes设备编号
U8 EquipWorkMode; // IN,设备工作模式(读写器工作模式:0x00——使用指令中的工作模式;0x10——ES;0x20——非付费区BOM;0x21——付费区BOM;0x22——TVM;0x23——TCM;0x24——PCA;0x40——进站AGM;0x41——出站AGM)
U8 DownWorkModenum; // IN,模式数量
char chRCodeBaudrate[12]; // IN,关联扫码枪通讯波特率
_stInitMode Mode[16];
// stInitMode_CD Mode[16];

char chRCodeCOM[10]; // IN,关联扫码枪串口号
char chModeStartTime[15]; // IN,模式发生时间(YYYYMMDDhh24mmss);
char chRCodeServerAddr[256]; // IN, 支付平台接入地址,例如http://182.140.238.35:61082/
U8 ucModeID; // IN,模式ID (参见第4分册“3.2.11 降级运营模式ID”)
bool Mark_IsUseQRcode; //take:add是否启用二维码 在读写器里传参标志需要
};

typedef struct stInitReaderInfo {
char chLineNumber[3]; // IN,线路编码
char chStationNumber[3]; // IN,车站编码
char chEquipmentType[3]; // IN,设备类型
char chEquipmentNumber[4]; // IN,3bytes设备编号
U8 ucEquipWorkMode; // IN,设备工作模式(读写器工作模式:0x00——使用指令中的工作模式;0x10——ES;0x20——非付费区BOM;0x21——付费区BOM;0x22——TVM;0x23——TCM;0x24——PCA;0x40——进站AGM;0x41——出站AGM)
U8 ucDownWorkModenum; // IN,模式数量
_stInitMode Mode[16];
//char chEquipmentID[17]; // OUT,16位PSAM卡ID
} _stInitReaderInfo;


typedef struct _stRCodeInfo {
char chRCodeCOM[10]; // IN,关联扫码枪串口号
char chRCodeBaudrate[12]; // IN,关联扫码枪通讯波特率
char chRCodeServerAddr[256]; // IN, 支付平台接入地址,例如http://182.140.238.35:61082/
} _stRCodeInfo;




void startReaderAFC(void* i_StartAFCData)
{



/****>>>>>>>>>>>>>>>>>>take:第一个参数结构体***>>>>>>>>>>>>>>>>>>>>>>>>>******************/

_stInitReaderInfo take_stInitReaderInfo;
strcpy(take_stInitReaderInfo.chLineNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chLineNumber);
strcpy(take_stInitReaderInfo.chStationNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chStationNumber);
strcpy(take_stInitReaderInfo.chEquipmentType, ((stInitReaderInfo_CD*)i_StartAFCData)->chEquipType);
strcpy(take_stInitReaderInfo.chEquipmentNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chEquipNumber);
take_stInitReaderInfo.ucEquipWorkMode = ((stInitReaderInfo_CD*)i_StartAFCData)->EquipWorkMode;
take_stInitReaderInfo.ucDownWorkModenum = ((stInitReaderInfo_CD*)i_StartAFCData)->DownWorkModenum;
//take_stInitReaderInfo.Mode = ((stInitReaderInfo_CD*)i_StartAFCData)->Mode;
memcpy(take_stInitReaderInfo.Mode, ((stInitReaderInfo_CD*)i_StartAFCData)->Mode, sizeof(take_stInitReaderInfo.Mode));//take:这样可以吗?

/***<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<take:第一个参数结构体**<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<******/


/*>>>>>>>>>>>>>>>>>>>>>>>>>>>take:第二个参数*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
_stRCodeInfo *ptr_stRCodeInfo = (_stRCodeInfo*)malloc(sizeof(_stRCodeInfo));

memset(ptr_stRCodeInfo->chRCodeBaudrate, '\0', sizeof(ptr_stRCodeInfo->chRCodeBaudrate));
memset(ptr_stRCodeInfo->chRCodeCOM, '\0', sizeof(ptr_stRCodeInfo->chRCodeCOM));
memset(ptr_stRCodeInfo->chRCodeServerAddr, '\0', sizeof(ptr_stRCodeInfo->chRCodeServerAddr));

cout << "(stInitReaderInfo_CD*)i_StartAFCData)->chRCodeCOM):" << ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeCOM << endl;
strcpy(ptr_stRCodeInfo->chRCodeCOM, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeCOM);

cout << ptr_stRCodeInfo->chRCodeCOM << " line:" << __LINE__ << endl; //只有这里是正确的

strcpy(ptr_stRCodeInfo->chRCodeBaudrate, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeBaudrate);
cout << ptr_stRCodeInfo->chRCodeCOM <<" line:"<<__LINE__<< endl;
strcpy(ptr_stRCodeInfo->chRCodeServerAddr, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeServerAddr);

cout << ptr_stRCodeInfo->chRCodeCOM << " line:" << __LINE__ << endl;
//cout << "(stInitReaderInfo_CD*)i_StartAFCData)->chRCodeCOM):" << ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeCOM << endl;
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************************************************<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
// cout << ((test*)i_StartAFCData)->chEquipNumber << endl;



// cout<<((stInitReaderInfo_CD*)i_StartAFCData)->chEquipmentNumber;
}

int main()
{

stInitReaderInfo_CD temp[2];


// strcpy(temp[0].chEquipNumber_, "aa");
temp[0].EquipWorkMode = 34;

strcpy(temp[0].Mode[0].chModeStartTime, "201804-=18");
strcpy( temp[0].chLineNumber, "nu");

strcpy(temp[0].chStationNumber,"st");
strcpy(temp[0].chEquipType,"tp");
strcpy(temp[0].chEquipNumber, "chn");
sprintf(temp[0].chRCodeBaudrate, "%d", 115200);
strcpy(temp[0].chRCodeCOM, "/dev/ttyS8");
strcpy(temp[1].chRCodeCOM, "/dev/ttyS9");

temp[1] = { 0 };

startReaderAFC(&temp);




}
`
文章目录