我有一段代码(函数),在这里我收到一个输入缓冲区数据包作为第一个参数,其长度作为第二个参数。我正在接收的缓冲区包含一些需要的数据,但是还包含一些垃圾值。我只需要打印实际数据(忽略垃圾值)。我怎么做?
这里是(简化版本)代码:
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”。我该如何支票?上面的代码会打印所有内容。提前致谢。
最佳答案
首先,您打算如何区分ACTUAL DATA和垃圾?
如果在调用此函数之前已知ACTUAL DATA的大小,请在*len
中发送该值,针对该特定大小执行memcpy()
[不要忘记添加尾随的\0
用作字符串]。
如果需要在decodeResp()
内进行检查,请过滤in_buf
,计算ACTUAL DATA的长度,对该尺寸进行memcpy()
并打印。
编辑
看来您正在通过某些socket
接收数据包。您可以利用recv()
调用的返回值将*len
提供给decodeResp()
,以防万一您正在使用一些未初始化的缓冲区来接收传入的数据包。
关于c - 接收的缓冲区包含带有一些垃圾值的实际数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25784946/