Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
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”