我怎样才能打印树节点空指针指向的这个结构的成员?
how can I print membes of this structure pointed by a tree node void pointer?
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);
}
只有指向树的指针,如何在标准输出上打印 codigo 和 *nome
我试过:
tree->root->data->nome
和
树->root->data-codigo
但是没用。
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("%s\n", u->nome);
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);
}
只有指向树的指针,如何在标准输出上打印 codigo 和 *nome 我试过:
tree->root->data->nome 和 树->root->data-codigo
但是没用。
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("%s\n", u->nome);