c - 附加到动态分配的数组

标签 c

我正在尝试将接收到的数据添加到需要在运行时配置的缓冲区(我从文件或命令行读取大小)。

所以基本上我确定了我的 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/

相关文章:

c - 编写我自己的内存管理器

c - 理解代码片段

c - C 中的脚本未正确添加 float

c - linux 内核中的 mmap() 用于访问未映射的内存

c - 位操作快速 strlen

c - 复制到二进制文件时出现段错误

c - C中链表函数的 append (添加到尾部)打印不正确(不打印最后 append 的元素)

C,通过标记字符串填充二维数组

c - 是否可以在 C 中找到变量的数据类型?

c - fprintf 不起作用,需要打印 txt 文件的特定行