Documente Academic
Documente Profesional
Documente Cultură
Operaii de intrare-ieire.
Fiiere
Grigore ALBEANU
http://www.ad-astra.ro/galbeanu/
Versiunea 2014
Cuprins
Funcii de intrare-ieire folosind consola: cu format
Versiunea 2013
Versiunea 2013
Versiunea 2013
Versiunea 2013
Versiunea 2013
Funcia putchar()
Pentru scrierea unui caracter la stdout se utilizeaz
Versiunea 2013
specificatori de format: iruri precedate de caracterul '%' care descriu fiecare cmp
ateptat;
II. caractere de spaiere: spaiu (' '), tab ('\t'), linie nou ('\n');
III. orice alt caracter ASCII (Unicode).
I.
Versiunea 2013
10
Versiunea 2013
11
Versiunea 2013
12
Versiunea 2013
13
Versiunea 2013
14
Versiunea 2013
15
Versiunea 2013
16
de adiacen a grafului
(x[i][j] = 1 dac vrfurile i
i j sunt conectate direct,
x[i][j] = 0, n caz contrar).
Se va obine matricea y
cu elemente: y[i][j] = 1
dac vrfurile i i j sunt
conectate printr-un drum,
y[i][j] = 0, n caz contrar.
Dac x descrie o relaie
binar R atunci y
reprezint matricea
nchiderii tranzitive a
relaiei R.
Versiunea 2013
17
Versiunea 2013
18
FILE *
Versiunea 2013
19
Fluxuri de date
Versiunea 2013
20
Funcia fopen()
unde:
nume_fis este un ir de caractere (constant sau obinut prin atribuire) care specific numele extern al fiierului,
mod_acces este un ir de caracter (constituit similar) care descrie modul de acces.
n cazul unei operaii de deschidere corecte, pointerul returnat de apel este diferit de NULL, n caz contrar rezultatul apelului este
NULL.
Modurile posibile de acces sunt:
deschidere flux de tip text (r sau rt), respectiv flux binar (rb) pentru citire (mod reset);
deschidere flux de tip text (w sau wt), respectiv flux binar (wb) pentru scriere (cu distrugerea fiierului anterior, dac acesta
exista- mod rewrite);
deschidere flux de tip text (a sau at), respectiv flux binar (ab) pentru adugare la sfrit (mod append);
deschidere flux de tip text (r+ sau r+t), respectiv flux binar (r+b) pentru actualizare (citire i scriere folosind acelai pointer la
fiier);
deschidere flux de tip text (w+ sau w+t), respectiv flux binar (w+b) pentru actualizare (dac fiierul exista anterior, coninutul
su se pierde);
deschidere flux de tip text (a+ sau a+t), respectiv flux binar (a+b) pentru actualizare cu scriere la sfritul fiierului.
Versiunea 2013
21
al crei rezultat este nenul (s-a detectat EOF) respectiv zero (nu s-a detectat EOF).
Asocierea unui nou fiier la un flux deschis deja se realizeaz folosind funcia freopen cu
prototipul:
FILE * freopen(const char * <id_fis_extern>, const char * <mod_acces>, FILE * p_fis);
unde p_fis este identificatorul fluxului existent care se va nchide n urma apelului i se va
deschide fiierul cu numele <id_fis_extern> n modul de prelucrare <mod_acces> atribuind
pointerul la structura creat variabilei p_fis. Funcia returneaz valoarea atribuit lui p_fis.
Versiunea 2013
22
Versiunea 2013
23
Aplicaii (1)
Versiunea 2013
24
Pentru a obine informaii despre un fiier se pot utiliza funciile stat i fstat cu prototipul
declarat n fiierul stat.h din catalogul sys. Ne vom referi la funcia stat. Aceasta are
prototipul:
int stat (char *cale, struct stat * statzona);
unde: cale reprezint numele fiierului sau catalogului, iar statzona este adresa unei structuri de
tip stat ale crei cmpuri descriu starea entitii n discuie. De exemplu, cmpul st_size
furnizeaz dimensiunea unui fiier, n octei.
Versiunea 2013
25
vprintf, vsprinf.
Ne vom referi numai la funciile fprintf i printf.
Funcia fprintf este o funcie cu numr variabil de parametrii
avnd prototipul:
int fprintf(FILE *fp, const char *format, ...);
unde fp se refer la fluxul de date deschis n vederea realizrii
transferului, iar format respect specificaiile descrise n
momentul prezentrii funciilor scanf() i printf().
Funcia printf(format, ...) este echivalent cu
fprintf(stdout,format, ...).
Versiunea 2013
26
Versiunea 2013
27
Versiunea 2013
28
Versiunea 2013
29
funcia cu prototipul:
char *fgets(char *s, int n, FILE *fp);
la al crei apel se citesc, n s, cel mult n-1 caractere din fiierul fp la
care se adaug caracterul \0 i se returneaz s sau NULL n caz
unei erori sau la ntlnirea codului EOF.
Reamintim utilizarea funciei cu prototipul:
char *gets(char *s);
care citete urmtoarea linie de la consol i o depune n s.
Versiunea 2013
30
Versiunea 2013
31
Versiunea 2013
32
Versiunea 2013
33
Versiunea 2013
34
Versiunea 2013
35
Versiunea 2013
36
Versiunea 2013
37
Aplicaii (4)
Stocarea integral a datelor n memoria
Versiunea 2013
38
Aplicatii (5)
Versiunea 2013
39
Versiunea 2013
40
Versiunea 2013
41