Witam, mam do napisania funkcję w jezyku C, która wczytuje z pliku tytuły książek i zapisuje je do listy jednokierunkowej. Mógłby ktoś spojrzeć na mój kod i powiedzieć co źle robie?
#include <stdio.h>
#include <stdlib.h>
struct ksiazka{
char tytul[256];
};
struct lista{
struct lista *nast;
struct ksiazka ks;
};
struct lista* wczytaj_baze()
{
struct ksiazka ks;
FILE *plik;
struct lista* nowy=NULL;
struct lista* head=NULL;
struct lista* ogon=NULL;
if ((plik = fopen("baza.bin", "rb")) == NULL)
{
printf("Blad otwarcia pliku");
return NULL;
}
if (fread(&ks, sizeof(ks), 1, plik) == 1)
{
nowy=(struct lista*)malloc(sizeof(struct lista));
nowy->nast = NULL;
nowy->ks=ks;
head=nowy;
ogon=nowy;
} else {
while (fread(&ks, sizeof(ks), 1, plik) == 1)
{
nowy=(struct lista*)malloc(sizeof(struct lista));
nowy->nast=NULL;
ogon->nast=nowy;
ogon=nowy;
}
}
fclose(plik);
return head;
}
void wyswietl(struct lista* head){
if(head==NULL){
printf("Lista jest pusta!! \n");
return;
} else{
do{
printf("%s\n",head->ks.tytul);
head=head->nast;
}while(head);
}
}
int main(int argc, char *argv[])
{
int n;
struct lista* head=NULL;
head=wczytaj_baze();
wyswietl(head);
system("PAUSE");
return 0;
}