C语言 如何打印由树节点空指针指向的此结构的 membes


typedef struct{
     int codigo;     
     char *nome;  
} Un_curricular;
typedef struct tnode{
    struct tnode *left;
    struct tnode *right;
    void *data;
} Tnode;
typedef struct{
    Tnode *root;
    int (*compare)(void *data1, void *data2 );
} Tree;
int main(void){
    Tree *tree = malloc(sizeof(Tree) );
    tree->compare = NULL;
    Tnode *t = malloc(sizeof( Tnode) );
    t->right = NULL;
    t->left = NULL;
    Un_curricular * uc = malloc(sizeof(Un_curricular) );
    uc->nome = "PGII";
    uc->codigo = 10;
    t->data = uc; 
    tree->root = t;
    printf("%sn",tree->root->data->nome);
}

只有指向树的指针,如何在标准输出上打印codigo和*nome我试过:

树>根>数据>名和树>根>数据编码

但它不起作用。

main.c:在函数"main"中:

main.c:39:警告:取消引用"void *"指针

main.c:39:错误:在非结构或工会中请求成员"nome">

谢谢。

您正在尝试取消对void*指针的引用,但编译器不知道它的大小。这就是您收到此错误的原因。
如果要打印Un_curricular*的一部分,则必须在Un_curricular*变量中进行显式转换。

Un_curricular* u = (Un_curricular*) tree->root->data;
printf("%sn", u->nome);

最新更新