Can someone please help me understand why when I try to print out the value of student_name, it only returns null? I'm implementing a basic hashtable in C to store the a students name, id, and 2 tests. Everything else is storing correctly, I just can't manage to save the the student_name no matter what I try. I have two structs, the hashtable itself and then record, the elements I intend to put inside of the table. The character string will never be longer than 18 characters.
int main(){
    char op[1];
    int stu_id[1];
    int exam1[1];
    int exam2[1];
    char * student_name = (char*)malloc(18*sizeof(char));
    struct hashtable * dictionary = malloc(sizeof(struct hashtable));
    dictionary->size = 13;
    dictionary->table = malloc(13*sizeof(struct record *));
    if(dictionary==NULL||dictionary->table==NULL){
        printf("Unable to allocate memory for the dictionary.\n");
        return;
    }
    int i;
    int s = 13;
    while(i<s){
        dictionary->table[i]=NULL;
        i++;
    }
    while(scanf("%s %d %d %d %s", op, stu_id, exam1, exam2, student_name) !=EOF){
        if(*op=='i'){
            printf("Intializing %s\n", *student_name);
            add_item(dictionary, stu_id[0], exam1[0], exam2[0], student_name);
    }
    free(dictionary);
    free(student_name);
    return 0;
}
 
     
     
    