我正在尝试将接收到的数据添加到需要在运行时配置的缓冲区(我从文件或命令行读取大小)。
所以基本上我确定了我的 buffersize
并使用 calloc
分配了一个内存区域(我还放了一个 catchall 来设置缓冲区大小,如果它不在配置文件中或者命令行 - 假设我们现在使用它)。
我只放置适用的代码行。
int buffersize=10000;
void *BuffPtr = (void *)calloc(1,buffersize * sizeof(char));
然后我有一个来自 UDP 的 recv
(我已经尝试接收到 char 数组和动态分配的数组 - 两者都工作正常)
// 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);
我做错了什么??
提前致谢。
最佳答案
您的数据似乎不是以 0 结尾的字符串,您可能需要使用 memmove
代替。
关于c - 附加到动态分配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889512/