我有這個peice代碼(函數),我接收輸入緩衝區數據包作爲第一個參數,其長度作爲第二個參數。我接收的緩衝區包含一些需要的數據,但還有一些垃圾值。我只需要打印實際的數據(忽略垃圾值)。我怎麼做?包含實際數據和一些垃圾值的接收緩衝區
這裏去(簡化版本)代碼:
void decodeResp(char* in_buf, int *Len)
{
char msg_buffer[100] = {0};
memcpy(msg_buffer,(in_buf),*Len);
printf("\n********** Response Recieved: [%s] **********\n",msg_buffer);
}
假設如果in_buf
包含ACTUAL_DATA+(some garbage)
,我需要打印只是 「ACTUAL_DATA」 忽略無用值。我該如何檢查?上面的代碼將打印一切。
在此先感謝。
將'\ 0'置於msg_buffer [Len]位置。或者,如果不是指針,可以使用Len而不是* Len。確保你拷貝了正確的字節數,因爲在你的代碼中,開始處的緩衝區中有零,%s應該可以正常工作。 – 2014-09-11 10:32:25
什麼是垃圾數據?如果你知道期望什麼,你可以爲它做一個過濾器。此外,垃圾數據是否總是附加到實際數據中,還是在數據之間?如果附加,@ IvanIvanov的解決方案將正常工作。 – mechalynx 2014-09-11 10:41:38
並確保所有符號都是1個字節或使用其他數據類型(非char)。用strcpy複製字符串。 – 2014-09-11 10:42:03