我有這樣的功能:我怎樣才能在C中獲得我的矢量的大小?
void receive_message(int sock, char buffer[]) {
int test = recv(sock, buffer, strlen(buffer), 0);
buffer[test] = '\0';
}
功能recv()
的第三個參數是行不通的。顯然我不能使用strlen()
,因爲緩衝區沒有\0
。 sizeof()
也沒有幫助我。我希望我可以做到這一點,而不需要向我的功能receive_message()
傳遞第三個參數。
謝謝。
在C中,你沒有「矢量」。 –
btw使用sizeof是有意義的(如果信息可以在編譯時檢索到,但不能),而使用strlen是錯誤的。在這裏還有另一個可能的問題:'recv'可以讀取比預期更少的字節(通常對於小數據包它不會發生),即可以截斷接收數據(可能會有更多關於「message」重新等待);並且如果它填滿了所有的緩衝區,讀取可以放入緩衝區的最大字節數,你的'buffer [test] = 0'可能會導致分段錯誤,或者無法寫入對內存的訪問錯誤。 – ShinTakezou
@ShinTakezou你會推薦我'read'和'write'而不是'send'和'receive'嗎? –