我记得读过关于这行代码使用的解释,但过去一周我读过很多关于套接字的书籍,我再也找不到了。
我记得在书中,他们用= \ 0写了代码,然后说最好把它放在1
我试过搜索它,但没有运气,这是我正在阅读的代码片段
nread = recv(newsock, buffer, 25, 0);
buffer[nread] = '\0';
答案 0 :(得分:5)
它将接收到的缓冲区转换为 NUL终止的C字符串,可以与strlen, strcpy, etc.
一起使用
我假设您显示的代码仅用于说明目的,而不是生产代码,因为您没有检查recv的返回值,可以是-1
。如果发生这种情况,将导致内存损坏。
答案 1 :(得分:1)
这是C / C ++ null终止符,表示字符数组中内容的结尾。
答案 2 :(得分:0)
表示字符串以该字节结束。在这种情况下,最后一个。
\ 0是空字符。
所以你不会像“这是我的信息.aG¤(Ag4h98av¤”G#¤“)那样得到垃圾。想象一下该字符串末尾有一个\ 0。
在处理网络时,您通常希望发送整数等数据,最常见的做法是以二进制而不是纯文本发送。例如,整数可能看起来像“$%\ 0n”。 4个字节,但第三个是\ 0。所以你必须考虑到可以有一个\ 0。因此,您不应将数据的二进制表示存储为字符串,而应存储为缓冲区/字符串流。
当然,也许你不想打印出它的二进制表示。但你必须牢记这一点。也许你想打印出来,谁知道。