Pobieranie tekstu z pliku do struktury

0

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;
}

0

Np. przydzielasz pamięć dla struktury zanim spróbujesz otworzyć plik.
Jeżeli otwarcie nie udało się to masz wyciek pamięci.

0

Problem rozwiązany. Temat do zamknięcia/usuniecia.

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