我记得读过关于这行代码使用的解释,但是过去一周我读了太多关于套接字的书,以至于我再也找不到了。
我记得在书中,他们使用 =\0 编写代码,然后说最好将其设置为 1
我尝试搜索它,但没有运气,这是我正在阅读的一段代码
nread = recv(newsock, buffer, 25, 0);
buffer[nread] = '\0';
它将接收到的缓冲区转换为以NUL 结尾的 C-string,您可以使用strlen, strcpy, etc.
它-1
. 如果发生这种情况,将导致内存损坏。
这是 C/C++ 空终止符,指示字符数组中内容的结尾。
它表示字符串在该字节处结束。在这种情况下是最后一个。
\0 是空字符。
所以你不会得到像 "This is my message.aG¤(Ag4h98av¤"G#¤" 这样的垃圾。想象一下那个字符串的末尾有一个 \0 。
在处理网络时,您通常希望发送整数等数据,最常见的做法是以二进制而不是明文形式发送。例如,一个整数可能看起来像 "$%\0n"。4 个字节,但第三个是 \0。所以你必须考虑到可以有一个\0。因此,您不应将数据的二进制表示形式存储为字符串,而应将其存储为缓冲区/字符串流。
当然,也许您不想打印出它的二进制表示。但是你必须记住它。也许你想打印出来,谁知道呢。