запрос члена в чем-то, а не в структуре или союзе, но это структура

этот код представляет собой двоичное дерево поиска, которое я делаю для своего школьного задания.

#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);

}

Это мой полный код. Ну, я удалил ненужные биты кодов, но это все, что мне нужно знать.

typedef struct t_node {
    char name[MAXLEN + 1];
    char number[MAXLEN + 1];
    struct t_node *left;
    struct t_node *right;

} Node;

и это тип узла, который я использую.

в insert_tree вставка одного узла в порядке.

но когда я использую strncmp, возникают ошибки.

«Запрос членства в чем-то, кроме структуры или союза»

не является ли root структурой узла?

Я не понимаю, почему я получаю ошибки.


person JinMin Lee    schedule 15.05.2015    source источник


Ответы (1)


См. приоритет оператора, где -> имеет приоритет над *. Вы должны использовать (*root)->name в качестве аргумента для вашего вызова strncmp().

person Werkov    schedule 15.05.2015