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