sprintf 會自動追加’\0’至字符串末尾


 

#define LEN_SERIAL_NUMBER (12)

void C_CosemObjMeterInfo::SetSerialNum(U08 u08MeterId, U64 u64SerialNum)
{
    U08 u08tmp[LEN_SERIAL_NUMBER+2] = {0};
    memset(u08tmp, 0xFF, sizeof(u08tmp));            // 將緩存置為0xFF
   
    sprintf((char *)u08tmp, "%012lld", u64SerialNum);        // 打印12位數據至緩存

    memcpy(m_stMeterInfoTbl[u08MeterId].serialNum, u08tmp, LEN_SERIAL_NUMBER);
   
    printf("\r\nUpdate Meter%d's serial num to %012s\r\n", u08MeterId, u08tmp);

    for (U08 j = 0; j < sizeof(u08tmp); j++)
    {
        printf("0x%02x ", u08tmp[j]);
    }
}

打印輸出結果如下:

Update Meter0's serial num to 098020000703
0x30 0x39 0x38 0x30 0x32 0x30 0x30 0x30 0x30 0x37 0x30 0x33 0x00 0xff

由輸出結果可以清楚地看出,在12位數據之后,自動追加了0x00,即’\0’。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM