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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

#include // “strcpy”, “strcat”, strcmp” s.a.<br />

Primul modul din programul nostru va fi modulul de preluare a datelor initiale: nume<br />

fisier director al cãrui continut se afiseazã (cu calea la director), nume/tip fisiere listate<br />

si optiuni de afisare. Aici se fac si verificãri asupra utilizãrii corecte a programului si<br />

alte operatii de pregãtire a datelor pentru modulele urmãtoare. Vom porni cu o variantã<br />

<strong>în</strong> care nu se admit optiuni si se afiseazã numai fisiere din directorul curent, specificate<br />

printr-o mascã ce poate contine caractere ‘*’ si/sau ‘?’. Deci comanda de lansare a<br />

programului poate contine un singur argument (un sir mascã) sau nici unul; dacã nu se<br />

dã nici un argument se considerã masca “*.*”, deci se afiseazã toate fisierele.<br />

Varianta initialã pentru primul modul poate fi urmãtoarea:<br />

// preluare argumente din linia de comanda<br />

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

char *p;<br />

if (argc < 2){ // daca nu exista argument<br />

strcpy(mask,"*.*"); return;<br />

}<br />

p = strrchr(argv[1],'\\'); // ultimul caracter \<br />

if (p==0)<br />

strcpy(mask,argv[1]);<br />

else {<br />

printf("Numai fisiere din acest director \n"); exit(2);<br />

}<br />

}<br />

Urmãtorul modul, si cel mai important, este cel care obtine din sistem informatiile<br />

necesare pentru afisare: lista de fisiere si atributele fiecãrui fisier.<br />

Varianta urmãtoare este pentru mediul Borland C:<br />

int listFiles ( char* files[]) {<br />

struct ffblk finfo;<br />

int n, err; char full[256];<br />

n=0; // numar de fisiere gasite<br />

strcpy(full,path); strcat(full,mask);<br />

err= findfirst(full,&finfo,0xff);<br />

while (err >=0 ) {<br />

files[n++]= strdup(finfo.ff_name);<br />

err = findnext(&finfo);<br />

}<br />

return n;<br />

}<br />

Ultimul modul este cel care se ocupã de prezentarea listei de fisiere <strong>în</strong> functie de<br />

optiunile explicite sau implicite. In varianta initialã se afiseazã numele, lungimea si<br />

data de creare a fiecãrui fisier, cu exceptia fisierelor director pentru care nu se poate

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

Saved successfully!

Ooh no, something went wrong!