我想將收到的數據添加到需要在運行時可配置的緩衝區(我從文件或命令行讀取大小)。追加到動態分配的陣列
因此,基本上我確定我的buffersize
並使用calloc
分配一個內存區域(如果它不在配置文件或命令行中,我還要設置一個緩衝區大小 - 讓我們假設我們現在使用它)。
我只是把適用的代碼行。
int buffersize=10000;
void *BuffPtr = (void *)calloc(1,buffersize * sizeof(char));
我然後具有從UDP一個recv
(我試圖接收到字符數組和動態分配的陣列 - 這兩個工作精細)
// Setup socket......
void *PktBuff = (void *)calloc(1,1000 * sizeof(char));
// Loop and receive many packets......
rcvd_bytes=recv(recv_socket, PktBuff, 1000, 0);
我能,在這一點,寫的PktBuff
內容它工作正常。但我想在我的動態分配數組中連接多個收到的數據包(上面定義的BuffPtr
)。
我試過了strcat,但是如果我嘗試寫入收到的第一個數據包,卻沒有獲得另一個數據包,我就會發生垃圾。
strcat(BuffPtr, PktBuff);
我在做什麼錯?
在此先感謝。
strcat依賴'\ 0'作爲字符串終止符。嘗試在strcat之後添加它。 – BigMike
您正在執行calloc調用錯誤:第一個參數是要分配的項目數(第一個代碼塊中的「buffersize」),第二個參數是每個項目的大小。它應該是'calloc(buffersize,sizeof(char))'。 –
@BigMike errr否......假設BuffPtr只包含非\ 0字節。 –