gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:21:32 25 4
gpt4 key购买 nike

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

最佳答案

recvfrom 的契约(Contract)不保证在接收到的消息末尾和缓冲区末尾之间的内存会发生什么。这就是为什么 recvfrom 返回 valid 字节数的原因。 缓冲区的剩余部分没有改变,它被垃圾覆盖了。

改变

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);

关于c++ - 在 C++ 中删除字符数组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15293111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com