0
這是我的代碼..結果不同;的recv(襪子,BUF,的sizeof(BUF),0)和strlen的(BUF)中的C++
char buf[5000];
bool isHandshaking = false;
bool isSingaling = false;
while(1)
{
//-----------클라이언트로부터 수신------------
int recvsize = recv(sock,buf,sizeof(buf),0);
printf("recvsize = %d\n",recvsize);
buf[recvsize] = '\0';
printf("buf_len = %d\n",strlen(buf));
.
.
.
}
上述結果...的
recvsize = 2525
buf_len = 126 /*(or different value, sometimes 2525)*/
值recvsize is alaways 2525 而且我預計buf的strlen值當然會等於recvsize。但是,bufsize有時候等於2525,但有時它不一樣。 我錯過了什麼?
你知道[std :: strlen](http://en.cppreference.com/w/cpp/string/byte/strlen)是否計數到它找到的第一個''\ 0'? – Galik
@Galik說的是'recvsize'是套接字上接收到的字節數。然而,一個字符串是一個字符數組,而當傳遞給'strlen()'時,字節數組現在假設字符串語義而不是字節數組語義。因此,'strlen()'返回從起始點到找到字符串結尾或零值時發現的字符數。要確定這是否確實發生了什麼,可以檢查'strlen()'返回的長度之後的字符是否爲零。 –