Przypisanie książki do użytkownika w C. Listy jednokierunkowe.

0

Witam chcę stworzyć bazę danych w której mam 2 struktury Książki oraz uczniowie.
Stworzyłem przy ich pomocy 2 listy jednokierunkowe. Teraz chciałbym utworzyć funkcję która przypisywałaby danemu uczniowi książki oraz zliczała ich ilośc. Tylko teraz pojawia się problem jak to zrobić. Chciałem użyć tablicy wskaźników (** ptr) która zawierałaby adresy do danych książek, jednak nie bardzo wiem jak to zrobić.

typedef struct Student{ ///Struktura przechowujaca dane studentów

    int id;
    char name[10];
    char surname[15];
    char email[20];
    char phone_num[9];
    struct STUDENT *next;
    struct BOOK *assigned;

}STUDENT;

typedef struct Book{ /// Struktura przechowujaca dane ksiazek

    int id;
    char author[15];
    char title[20];
    char year[4];
    struct BOOK *next;

}BOOK;

void assign_book(STUDENT *root_student, BOOK *root_book){

STUDENT *crt_stud = root_student;
BOOK *crt_book = root_book;

int stud_id = 4;
int book_id = 3;

while(crt_stud != NULL){   /// Pętla operująca na uczniach

    if(crt_stud->id == stud_id){
        while(crt_book !=NULL){  /// Pętla operująca na książkach
            if(crt_book->id == book_id){
                crt_stud->assigned = crt_book;  ///Przypisanie wybranej ksiazki do zmiennej wskaznikowej
                printf("%s",crt_stud->assigned->title);  /// Sprawdzenie czy funkcja wypisze tytuł przypisanej książki <--- Po wstawieniu tej linijki program się nie kompiluje
                break;
            }
            else{
                crt_book = crt_book->next;
            }
        }
        break;
    }
    else{
        crt_stud = crt_stud->next;
    }

}

To jest kod który do tej pory udało mi się napisać.
Nie wiem tylko dlaczego gdy próbuję wypisać na ekran przypisaną książkę, program się nie kompiluje.
Jeżeli ktoś byłby w stanie wyjaśnić mi jak zrobić aby można było by przypisać kilka książek oraz wyjaśnić co robię źle byłbym wdzięczny.

0

Prawdopodobnie brak:

#include <stdio.h>

Jeżeli:

typedef struct Student{
  ...
}STUDENT;

to używasz jedno z dwojga:

struct Student * var;
STUDENT * var;

lub zamienić na:

typedef struct Student{
  ...
}Student;
Student * var;
0

Tu: https://github.com/lion137/C_datastructures/blob/master/linked_list/linked_list.h , Masz wzór, jak stworzyć listę, Dodasz więcej pól z danymi, a funkcjeadd i init, zrobią robotę..

1 użytkowników online, w tym zalogowanych: 0, gości: 1