CCS stdio FILE

Petr Labaj labaj na volny.cz
Pondělí Listopad 1 12:44:41 CET 2021


Sice tomu taky moc nerozumím, ale pochopil jsem to takhle:
Tazatel má systém, kde v nějaké standardní knihovně (v nějakém libc nebo 
něčem takovém) má funkce, které realizují souborové operace.
Ale nemá k nim příslušné *.h. A tak neví, jak mají vypadat předávané 
parametry těm voláním v libc.
Tak se to snaží nějak očůrat tím, že si vytvoří příslušné struktury a 
jejich obsah sám.

Přijde mi to sice zvláštní, ale svět je nakonec celý zvláštní, že.

Kdybych to musel takto řešit, tak bych se pořádně podíval po různých 
půjčovnách (Uloz a jiné) a pohledal bych tam k zapůjčení ten SW, kde to 
(podle něho) má být.
Každopádně je to ale jeden z nejneobvyklejších dotazů, co na konferenci 
za poslední dobu šel.

PL

********************

Dne 1.11.2021 v 11:58 David Obdrzalek napsal(a):
> Myslim, ze jsi to porad nepochopil. S obsahem struktury FILE zasadne nepracujes.
> Pracujes vyhradne s ukazatelem na ni (neboli ne FILE ale FILE *) a NEZAJIMA te, co
> je uvnitr.
>
> Jestli v programu nekdo pouzil FILE, tak tim zpusobem, ze pouziva funkce, ktere jako
> parametr maji FILE *, pricemz ty funkce i FILE jsou deklarovane v nejakem
> hlavickovem souboru (typicky to je stadnardni knihovna stdio.h a deklarace FILE tam
> je jen prejmenovani nejake interni struktury nebo dokonce void *). Pak mas v ruce
> promennou typu FILE * a hotovo. Treba takhle pro precteni 100 bajtu ze souboru:
> FILE * mujsoubor;
> char buffer[100];
> if((mujsoubor=fopen("fajl.txt","r")) != NULL)
> {
> 	if(fread(buffer,1,100,mujsoubor) != 100) // chci precist 100 prvku velikosti 1B
> 	{
> 		// fread vraci pocet prectenych prvku, takze kdyz nevrati 100, tak se to nepovedlo
> 		perror("Neprecetl jsem 100 B"); // vypisu nejakou chybovou hlasku
> 	}
> 	else
> 	{
> 		//precetlo se to a tady se s tim neco udela
> 		fclose(mujsoubor); // a nakonec se soubor zavre
> 	}
> }
>
> Pricemz je ti uplne fuk, co v ty strukture system potrebuje mit, ty do ni dovnitr
> nikdy sahat nepotrebujes a nebudes a nepotrebujes ani vedet, co v ni je. Ani ji
> nevytvraris ani nerusis, to delaji ty funkce, co volas.
>
> Takhle by to melo fungovat na libovolne platforme, kde je stdio.h a FILE pouzite.
> Jak je ta knihovna implementovana, te nezajima, to je zalezitost daneho prostredi a
> komiplatoru. Zacalo by te to zajimat az tehdy, kdyz bys chtel projekt portovat na
> nejakou platformu, kde tahle standardni knihovna implementovana neni. A to bys pak
> asi musel dost veci napsat/prepsat. Ale prejit z CSS na XC8 by v tomhle smeru nemelo
> znamenat vubec nic, cekal bych, ze z hlediska uzivatele to bude naprosto stejne.
>
> D.O.
>



Další informace o konferenci Hw-list