我想在conbuf.buffer中接收字节 . 测试1或测试2都可以 . 我没有看到printf语句中的任何值 . 我正确地传递了指针吗?如何为结构内的char指针分配内存 .
typedef struct cBuf
{
int size;
char *buffer;
} cbuf;
class A
{
cbuf conbuf;
void test();
}
void A::test()
{
int buffersize = 20;
char buf[buffersize];
conbuf.buffer = (char *)malloc(buffersize * sizeof(char *));
// test 1
int n = socket.receivebytes(conbuf.buffer, buffersize);
// test 2
//int n = socket.receivebytes(buf, buffersize);
//strcpy(conbuf.buffer, buf);
printf("conbuf.buffer %s \n", conbuf.buffer);
}
2 回答
这个
应该
用这个:
因为printf要求字符串的最后一个字符串为空终止,所以这可以确保它 . 但是从网络收到的数据可能已经在中间包含NUL . 因此,不应使用printf,而应使用fwrite:
我建议你将它重定向到一个文件中并进行十六进制转储以查看输出 .