Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何打印由树节点空指针指向的此结构的成员?_C_Printing_Void - Fatal编程技术网

C 如何打印由树节点空指针指向的此结构的成员?

C 如何打印由树节点空指针指向的此结构的成员?,c,printing,void,C,Printing,Void,只有指向树的指针,如何在标准输出上打印codigo和*nome 我试过: 树->根->数据->命名 和 树->根->数据编码 但它不起作用 main.c:在函数“main”中: main.c:39:警告:取消引用“void*”指针 main.c:39:错误:请求非结构或联合中的成员“nome” 谢谢。您正试图解除对void*指针的限制,但编译器不知道它的大小。这就是为什么会出现此错误。 如果要打印非课程*的一部分,必须在非课程*变量中进行显式转换。 typedef struct{ in

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

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

但它不起作用

main.c:在函数“main”中:

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

main.c:39:错误:请求非结构或联合中的成员“nome”


谢谢。

您正试图解除对
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);

}

成功了!非常感谢,我已经听了好几个小时了。
Un_curricular* u = (Un_curricular*) tree->root->data;
printf("%s\n", u->nome);