Uczę się programować w C i mam do zrobienia projekt. Niestety utknęłam na samym początku tj. dodawanie elementów do listy. Po wpisaniu ciągu znaków dla el->imie_autor i/lub el->nazwisko_autor program się wysypuje. Próbowałam zrobić to na dodatkowych zmiennych i dopisać je do elementu, ale wtedy wpisywany ciąg znaków wyświetlał jedynie zmodyfikowane nazwisko z buźką.
Tutaj podaję Funkcję:
#include<stdio.h>
#include<stdlib.h>
typedef struct ObiektWypozyczenia
{
int ID;
char *tytul;
char *imie_autor;
char *nazwisko_autor;
char *kategoria;
char *imie_osoba;
char *nazwisko_osoba;
int ilosc_wyp;
struct data_wyp
{
int rok, miesiac, dzien;
};
struct ObiektWypozyczenia *next;
struct ObiektWypozyczenia *prev;
}dane;
dane *head = NULL;
dane *tail = NULL;
void dodaj(dane *head, int ID)
{
dane *el = (dane*)malloc(sizeof(dane));
printf("\nPodaj dane obiektu\n");
unsigned int m;
printf("\tKategoria (1.ksiazka/2.film/3.gra planszowa): ");
scanf("%d", &m);
if(m == 1)
{
el->kategoria = "ksiazka";
}
else if(m == 2)
{
el->kategoria = "film";
}
else if(m == 3)
{
el->kategoria = "gra planszowa";
}
else
{
printf("\nNieprawidlowy znak. Sprobuj ponownie.\n");
// return menu();
}
printf("\tTytul: ");
scanf(" %s", el->tytul);
printf("\tImie autora: ");
scanf(" %s", el->imie_autor);
printf("\tNazwisko autora: ");
scanf(" %s", el->nazwisko_autor);
if(head == NULL)
{
head = el;
el->ID = ID;
// el->imie_autor = imie_autor;
// el->nazwisko_autor = nazwisko_autor;
el->next = NULL;
el->prev = NULL;
tail = el;
}
else
{
el->ID = ID;
// el->imie_autor = imie_autor;
// el->nazwisko_autor = nazwisko_autor;
el->next = NULL;
el->prev = tail;
tail->next = el;
tail = el;
}
}
```