Hi i am trying to insert char *keyin = NULL and char *valuein = NULL; to my binary search tree, but error message appears like: Yelp1.c:111:11: error: assignment to expression with array type r->name = key; ^ Yelp1.c:112:11: error: assignment to expression with array type r->data = value; How should i modify this? Here is my part of code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXNAMELENTH 64
#define MAXDATALENTH 1465
typedef struct node
{
    char name[MAXNAMELENTH];
    char data[MAXDATALENTH];
    struct node* left;
    struct node* right;
}node;
node* root;
node* search(node ** tree, char *key, int count, FILE *fp_out);
node* insertion(node* r, char *key, char *value);
void deltree(node * tree);
char* strtok_r(char *str, const char *delim, char **nextp);
int main(int argc, char *argv[])
{
    node *root;
    node *tmp;
    FILE *fp;
    FILE *outputfile;
    FILE *keyfile;
    FILE *fp_key;
    int i;
    int counter = 0;
    int bufsize = MAXDATALENTH + MAXNAMELENTH;
    int keyfilelen = MAXNAMELENTH;
    char *keyread;
    char *buffer,*saveptr;
    char *line = NULL;
    char *keyin = NULL;
    char *valuein = NULL;
    char inputkey[MAXNAMELENTH];
    char *target_key = NULL;
    char *keyline = NULL;
    root = NULL;
    /* Inserting nodes into tree */
    buffer = (char *)malloc(bufsize * sizeof(char));
    if (buffer == NULL)
    {
        exit(1);
    }
    fp = fopen(argv[1], "r");
    outputfile = fopen("outputfile.txt", "a");
    while (1)
    {
        fgets(line, bufsize, fp);
        buffer = line;
        keyin = strtok_r(buffer, ",", &saveptr);
        valuein = strtok_r(NULL, "\0", &saveptr);
        insertion(root, keyin, valuein);
    }
node* insertion(node* r, char *key, char *value)
{
    if(r==NULL) // BST is not created created
    {
        r = (struct node*) malloc(sizeof(struct node)); // create a new node
        // insert data to new node
        r->name = key;
        r->data = value;
        // make left and right childs empty
        r->left = NULL;   
        r->right = NULL;
    }
    // if the data is less than node value then we must put this in left sub-tree
    else if(strcmp(key, r->name) < 0){ 
        r->left = insertion(r->left, key, value);
    }
    // else this will be in the right subtree
    else if (strcmp(key, r -> name) > 0){
         r->right = insertion(r->right, key, value);
    }
    else {
        if(strcmp(value, r -> data) > 0){
            r -> left = insertion(r -> left, key, value); 
        }
        else if(strcmp(value, r->data) < 0){ 
            r -> right = insertion(r->right, key, value);
        }   
    }
    return r;
}
 
     
    