我有这个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