Contents

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

#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);




}
Contents