【发布时间】:2011-10-25 12:51:01
【问题描述】:
我正在尝试将接收到的数据添加到需要在运行时可配置的缓冲区(我从文件或命令行读取大小)。
所以基本上我确定我的buffersize 并使用calloc 分配一个内存区域(如果它不在配置文件或命令行中,我也会设置一个总括来设置缓冲区大小 - 假设我们现在使用它)。
我只放置适用的代码行。
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);
我做错了什么??
提前致谢。
【问题讨论】:
-
strcat 依赖 '\0' 作为字符串终止符。尝试在 strcat 之后添加它。
-
你在调用
calloc错误:第一个参数是要分配的项目数(第一个代码块中的buffersize),第二个参数是每个项目的大小.应该是calloc(buffersize, sizeof(char))。 -
@BigMike errr no... 假设 BuffPtr 仅由非 \0 字节组成。
标签: c