[英]request for member in something not a structure or union, but it's a struct
this code is a binary search tree I'm doing for my school assignment. 该代码是我为学校分配的二进制搜索树。
#include "binary_tree.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 10
Node* create_tree() {
return NULL;
}
void insert_tree(Node** root, char* nname, char* number) {
if (*root==NULL){
Node* node = (Node *)malloc(sizeof(Node));
strncpy(node->name , nname, MAXLEN);
strncpy(node->number , number, MAXLEN);
node->left = node->right = NULL;
*root = node;
return;
}
if (strncmp(*root->name, nname, MAXLEN)) {
insert_tree(&(*root)->left, nname, number);
} else {
insert_tree(&(*root)->right, nname, number);
}
}
void preorder(Node* node, int level){
int i;
if (node==NULL){
//printf("null\n");
return;
}
for (i = 0; i<level; i++) {
printf(" ");
}
printf("%s %d\n", node->name, level);
preorder(node->left, level + 1);
preorder(node->right, level + 1);
}
This is my Full code. 这是我的完整代码。 Well I deleted not necessary bits of codes, but thats all I need right know..
好吧,我删除了不必要的代码,但这就是我所需要的全部。
typedef struct t_node {
char name[MAXLEN + 1];
char number[MAXLEN + 1];
struct t_node *left;
struct t_node *right;
} Node;
and this is the Node type I'm using. 这是我正在使用的Node类型。
at the insert_tree, inserting one node is OK. 在insert_tree中,插入一个节点是可以的。
but when I use strncmp, it get errors. 但是当我使用strncmp时,会出现错误。
"Request for member in something not a structure or union"
“要求加入非结构或联合的成员”
isn't root a Node Struct? 不是根结点结构?
I don't get why I get errors. 我不明白为什么我会出错。
See operator precedence , where ->
is having precedence over *
. 请参阅运算符优先级 ,其中
->
优先于*
。 You should use (*root)->name
as argument to your strncmp()
call. 您应该使用
(*root)->name
作为strncmp()
调用的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.