在C ++中删除字符数组的内容

时间:2013-03-08 11:38:28

标签: c++ arrays

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

2 个答案:

答案 0 :(得分: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); 

答案 1 :(得分:0)

在接收并显示数据后,运行从0到999的循环以重置阵列的内容。