gpt4 book ai didi

c - 序列化目录树以通过 TCP 发送

转载 作者:行者123 更新时间:2023-11-30 17:05:35 25 4
gpt4 key购买 nike

我正在通过 TCP 向客户端应用程序发送目录树。 Dir 节点是一个如下所示的结构:

struct node {
char *name;
int count_subnodes;
struct node **subnodes;
};

序列化:

void serialize(void *buffer, struct node *n, int *c){
int i;
if(!n)
return;
memcpy(buffer+(*c), n, sizeof(*n));
*c+=sizeof(n);
for(i = 0; i < n->count_subnodes; i++){
serialize(buffer, n->subnode[i], c);
}
}

我做错了什么?当我为子节点递归调用序列化时,它会出现段错误。另外,我是否需要任何类型的分隔标记,以便我可以在客户端重建树?

编辑:c 用于记录缓冲区中当前位置的计数。

编辑 2:拼写错误。它是 sizeof(*n) 而不是 c。抱歉

最佳答案

  1. 你怎么知道你的缓冲区足够大?

  2. sizeof(n) 将给出指针的大小,而不是结构体的大小;使用sizeof(*n)

  3. 检查n->subnode[i]是否不NULL

关于c - 序列化目录树以通过 TCP 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35233399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com