FAT na jednocipu

Miroslav Sinko sinkomiro@rocketmail.com
Pátek Březen 24 00:55:50 CET 2006


--- n11444@seznam.cz wrote:
> Jen jsem ted narazil na problem a nevim, jestli by mi nekdo dokazal
> poradit.
> Nejprve se jako vzdy deklaruje FILE *fr; a pak se vola funkce
> fr=fopen...
> V teto funkci mam "static FILE fopnstr;" na kterou pointer je i
> navratova
> hodnota. Nojo, ale kdyz oteviram nekolik souboru, vsechny se ulozi do
> jednoho pametovaho prostoru (logicky). Nevite, jak to zaridit, aby se
> pri
> kazdem vola funkce fopen definovala struktura FILE na jinam miste v
> pameti a
> zustala samozrejme i zachovana po opusteni funkce?
> Ale vzhledem k omezenym kapacitam jednocipu bych nerad pouzival
> (podle me
> velkou) funkci maloc();

V C-cku to funguje prave tak, ze si definujete len pointer na strukturu
FILE a az fopen() alokuje pamat o velkosti struktury, ktoru aj naplni
pri uspesnom otvoreni suboru. fclose() tu pamat potom uvolni. Takze ako
pozadujete "aby se pri kazdem vola funkce fopen definovala struktura
FILE na jinam miste v pameti", nemate na vyber, musite pre strukturu
vyhradit pamat => malloc (alebo vasa propietarna nahrada, ked viete aku
pamat na to mozte "obetovat", tak si jej spravu urobite sam). 
Pamat ostane zachovana aj po opusteni funkcie, ale aby ste na nu
nestratili odkaz, ten smernik musi byt globalny. Ak potrebujete v
jednom case mat otvorenych viac suborov, musite mat aj viac globalnych
smernikov. To sa da riesit alebo priamym definovanim (pola) smernikov v
pocte, ktory pozadujete, alebo dynamickym alokovanim pola pre tieto
smerniky - napr. zretazeny dynamicky zoznam struktur. 
Kazdopadne vo fopen() mat static FILE je nepouzitelne, ak chcete
otvarat sucasne viac suborov.

miro

PS: ...radsej nic, adresat sa snad dovtipi


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 



Další informace o konferenci Hw-list