17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

void main(int argc, char * argv[]) {<br />

char *files[MAXF]; // vector cu nume de fisiere<br />

int nf; // numar de fisiere<br />

getargs (argc,argv); // preluare date<br />

nf=listFiles(files); // creare vector de fisiere<br />

printFiles(files,nf); // afisare cu atribute<br />

}<br />

Abordarea de jos <strong>în</strong> sus porneste cu definirea unor functii mici, care vor fi apoi<br />

apelate <strong>în</strong> alte functii, s.a.m.d. pânã se ajunge la programul principal.<br />

Pentru aflarea fisierelor de un anumit tip dintr-un director dat se pot folosi functiile<br />

nestandard “findffirst” si “findnext”, care depind de implementare.<br />

Pentru determinarea atributelor unui fisier cu nume dat se poate folosi functia “stat”<br />

(file status) sau “fstat”, declarate <strong>în</strong> fisierul antet împreunã cu tipul<br />

structurã folosit de functie (“struct stat”). Structura contine dimensiunea fisierului<br />

(“st_size”), data de creare (“st_ctime”), data ultimei modificãri si doi octeti cu<br />

atributele fisierului (“st_mode”): fisier normal sau director, dacã poate fi scris (sters)<br />

sau nu etc. Anumite atribute depind de sistemul de operare gazdã si pot lipsi <strong>în</strong> alte<br />

sisteme, dar functia “stat” si structura “stat” sunt aceleasi pentru diverse implementãri.<br />

Pentru determinarea atributelor, fisierul trebuie mai <strong>în</strong>tâi deschis. Prototip “stat” :<br />

int stat (char * filename, struct stat * statptr);<br />

cu rezultat 0 dacã fisierul specificat <strong>în</strong> “filename” este gãsit si 1 dacã negãsit.<br />

Functia “stat” poate sã primeascã numele complet, cu cale, al fisierului aflat <strong>în</strong>tr-un<br />

alt director decât programul care se executã.<br />

Pentru extragerea unor biti din câmpul “st_mode” sunt prevãzute constante<br />

simbolice cu nume sugestive. Exemplu:<br />

// verificã dacã “file” este fisier normal sau director<br />

err=stat (file, &finfo); // pune atribute in finfo<br />

if (finfo.st_mode & S_IFDIR)<br />

printf ("Directory \n" );<br />

else<br />

printf ("Regular file \n" );<br />

Functia “stat” si structura “stat” se pot folosi la fel <strong>în</strong> mai multe implementãri, desi<br />

nu sunt standardizate in ANSI C.<br />

Pentru conversia datei si orei de creare a unui fisier (un numãr long) <strong>în</strong> caractere se<br />

foloseste una din functiile standard “ctime” sau “asctime”.<br />

Utilizarea acestor functii necesitã includerea unor fisiere antet:<br />

#include // “findfirst”, “findnext”<br />

#include // “stat”<br />

#include // “ctime”

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!