0

我已将字符数组初始化为: char Buffer[1000]={0}; 在这个数组中,数据从一个套接字接收并显示每次我显示这个数组的内容时,我想再次将它的所有内容初始化为零。如果我不这样做并再次使用相同的数组从套接字读取数据,也会显示数组中存在的一些旧数据。在第二次接收数据之前,我使用 memset() 函数再次用零初始化数组的所有内容,但它不起作用。在 c/c++ 中有没有其他方法可以做到这一点?寻求帮助:(

4

2 回答 2

2

的合约recvfrom不保证在接收到的消息结束和缓冲区结束之间内存会发生什么。这就是recvfrom返回有效字节数的原因。 缓冲区的其余部分没有改变,它被垃圾覆盖。

改变

memset(receiveBuffer,'\0',1000); 
recv_len = recvfrom(socketIdentifier, receiveBuffer, sizeof(receiveBuffer), 0, (struct sockaddr *) &clientSocket, &clientSocketLength);

recv_len = recvfrom(socketIdentifier, receiveBuffer, sizeof(receiveBuffer), 0, (struct sockaddr *) &clientSocket, &clientSocketLength);
if (recv_len > 0)
    memset(receiveBuffer + recv_len, 0, 1000 - recv_len); 
于 2013-03-08T11:51:53.187 回答
0

在接收和显示数据后,运行一个从 0 到 999 的循环以重置数组的内容。

于 2013-03-08T11:46:30.237 回答