我已经初始化一个字符数组为: char Buffer [1000] = {0}; 在这个数组中,数据从套接字接收并显示出来 每次我显示这个数组的内容时,我想再次初始化它的所有内容为零。如果我不这样做并使用相同的数组从套接字中读取数据,则还会显示数组中存在的一些旧数据。 我使用memset()函数在第二次接收数据之前再次使用零初始化数组的所有内容,但它不起作用。 是否有任何其他方式在c/C++中做到这一点? 求助者:(删除C++中的字符数组的内容
回答
的合同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);
非常感谢:) 我试过了,整个问题都解决了:)你们的人真是太神奇了:) 非常感谢大家:) – Ayse 2013-03-08 11:57:39
正在接收和显示的数据后,运行从0到999的循环,以重置阵列的内容。
'void receiveAtSocket() {\t \t receiveBuffer [] = {0}; memset(receiveBuffer,'\ 0',1000); 如果((recv_len = recvfrom的(socketIdentifier,receiveBuffer,的sizeof(receiveBuffer),0,(结构sockaddr *)&ClientSocket的,&clientSocketLength))== SOCKET_ERROR) { 的MessageBox(NULL, \t \t \t \t “ERROR”, \t \t \t \t “无法接收数据”, \t \t \t \t MB_ICONINFORMATION); \t exit(EXIT_FAILURE); } PostMessage(AH_Glb_windowHandle,WM_thread,0,0); }' – Ayse 2013-03-08 11:48:28
这就是'memset'确实是什么,只有'memset'快得多 – 2013-03-08 11:49:33
当我在我的代码中使用memseet时,没有显示数据,但是当我删除它时,显示数据。这就是为什么我认为memset()不适合:( – Ayse 2013-03-08 11:51:42
- 1. 删除字符数组中的字符
- 2. 删除字符串内容
- 3. 删除字符串中的数字后的所有内容
- 4. 在BASH中,删除两组字符之间的所有内容
- 5. 从C中的数组中删除重复的字/字符串
- 6. 删除字符串的内容
- 7. 删除Excel的内容C#
- 8. 删除字符数组的字符
- 9. 比较两个字符串数组的内容,并删除出现在两个字符串中的字符串
- 10. 删除c字符串中的字符
- 11. 如何删除数组中最后一个数组的内容
- 12. 如何从C++中的字符串中删除不需要的内容?
- 13. 删除Tcl中的字符串中的某个字符后的所有内容
- 14. 在C中删除2D字符串数组的行#
- 15. C删除char数组中的重复字符
- 16. 如何更改C中字符数组的内容?
- 17. 帮助HashTables其中的内容字符串数组在C#
- 18. 从PHP中的字符串中删除重复内容
- 19. 如何从C++中含有大量内容的字符串中删除一行?
- 20. 字符串数组的删除方法
- 21. Java的字符数组 - 删除元素
- 22. 删除重复的字符数组从
- 23. PHP删除除字符串以外的所有内容
- 24. 从数组中删除字符串项
- 25. 从数组中删除字符串
- 26. 从PHP数组中删除字符串?
- 27. 删除字符串单元格数组中的字符(Matlab)
- 28. 根据字符(PHP)删除数组中字符串的部分
- 29. 从字符串数组中的字符串末尾删除“,”
- 30. 删除字符,c#
“我使用的memset()函数接收数据第二次之前重新初始化用零阵列中的所有内容,但它没有工作”是什么没有工作? – 2013-03-08 11:39:17
看起来你已经混合了memset参数 – AnatolyS 2013-03-08 11:45:07