如何打印由树节点空指针指向的此结构的元素?

时间:2016-02-13 13:03:59

标签: c printing void

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("%s\n",tree->root->data->nome);

}

只有指向树的指针,如何在stdout上打印codigo和* nome 我试过了:

树形>根 - > DATA->诺姆 和 树形>根 - >数据codigo

但它不起作用。

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

main.c:39:警告:解除引用'void *'指针

main.c:39:错误:请求成员'nome'不是结构或联合

感谢。

1 个答案:

答案 0 :(得分:0)

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

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