przydzielanie pamieci w C [pomoc]

lofixo

Użytkownik
Dołączył
Grudzień 23, 2010
Posty
1
Witam

Przedstawiam fragment programu tworzacego baze ksiazek (szczegoly nie musza byc raczej znane).
Ponizej fragment funkcji uzywajacej liste, wczytywajacej dane Z PLIKU.
Etykiety struktur:

struct ksiazka
{
char *tytul;
int rokwyd;
float cena;
struct autor *autors[MAX_AUT];
struct ksiazka *nast;
};

struct autor
{
char *imie;

};

Zdaje sobie sprawe, ze struktura autor jest zbedna, ale bedzie ona pozniej rozbudowywana.

for(i = 0; i < *fnumerks; i++)
{
fgets(buf , ROZMIARTYT , ww);


biezacy = (struct ksiazka *)malloc(sizeof(struct ksiazka));
printf("%s",buf);
if(*fks == NULL)
*fks = biezacy;
else
poprz->nast = biezacy;


buf[strlen(buf) - 1] = '\0';
biezacy->tytul = (char *)malloc((strlen(buf))* sizeof(char));
strcpy(biezacy->tytul, buf);

fgets(buf , ROZMIARAUT , ww);
buf[strlen(buf) - 1] = '\0';

biezacy->autors[0] = (struct autor *)malloc(sizeof(struct autor));
if (biezacy->autors[0] = NULL) exit(1);
biezacy->autors[0]->imie = (char *)malloc((strlen(buf))* sizeof(char));
strcpy(biezacy->autors[0]->imie, buf);

fscanf(ww , "%d" , &biezacy->rokwyd);
ch = getc(ww);

fscanf(ww , "%f" , &biezacy->cena);
ch = getc(ww);

poprz = biezacy;

}

Oczywiscie wszystko sie kompiluje. Problem w tym, ze po wczytaniu danych 2 ksiazek program przestaje dzialac (dokladnie w momencie, gdy ma przydzielic pamiec na trzecia strukture typu ksiazka). Wyglada na to, ze problem zwiazany jest wlasnie z pamiecia. Program dzialal dobrze do momentu az stworzylem przydzielanie pamieci dla struktury autor i stringu imie, takze tutaj upatruje bledu. Ale o co dokladnie moze chodzic?

Dziekuje za wszelkie wskazowki i pomoc.

P.S. Program jest w trakcie tworzenia i modyfikacji, dlatego może trochę "dziwnie" wyglądać.
 
Ostatnia edycja:
Do góry Bottom