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.

Numãrul total de fisiere din directorul curent si din subdirectoare sale poate fi foarte<br />

mare, iar programul trebuie sã facã fatã oricãrui numãr.<br />

In program existã si alte limite (la siruri de caractere) iar <strong>în</strong>cadrarea <strong>în</strong> aceste limite<br />

trebuie verificatã sau se recurge la alocare si realocare dinamicã pentru eliminarea<br />

unor limitãri arbitrare.<br />

Comparând cu modul de afisare realizat de comanda DIR programul nostru<br />

necesitã mai multe modificãri:<br />

- Numãrul de octeti ocupat de un fisier si de toate fisierele poate avea multe cifre iar<br />

pentru a fi mai usor de citit trebuie separate grupe de câte 3 cifre prin virgule.<br />

Exemplu: 12,345,678 bytes.<br />

Functia urmãtoare transformã un numãr lung <strong>în</strong>tr-un astfel de sir:<br />

void format(long x, char * sx) {<br />

int r[10],i=0; char aux[4];<br />

*sx=0; // pregatire strcat(sx,...)<br />

while ( x > 0) {<br />

r[++i]=x%1000; // un numar de max 3 cifre<br />

x=x/1000;<br />

}<br />

while ( i >0){<br />

printf("%d\n",r[i]);<br />

sprintf(aux,"%d",r[i--]);<br />

strcat(sx,aux); strcat(sx,",");<br />

}<br />

sx[strlen(sx)-1]=0; // elimina ultima virgula<br />

}<br />

- Sirul furnizat de functia “ctime” este greu de citit si contine date inutile (ex. numele<br />

zilei din sãptãmânã), deci mai trebuie prelucrat <strong>în</strong>tr-o functie.<br />

- In sistemul MS-Windows numele de fisiere nu sunt limitate la 8+3 ca <strong>în</strong> MS-DOS si<br />

deci va trebui prelucrat pentru reducere la 12 caractere. Programul NC (Norton<br />

Commander) nu retine primele 8 caractere din nume (care pot fi identice pentru mai<br />

multe nume) si formeazã un nume din primele 6 caractere ale numelui complet,<br />

caracterul ‘~’ si o cifrã (1,2,3...). Comanda DIR afiseazã si acest nume prescurtat si<br />

numele complet (sau o parte din el).<br />

Functiile “findfirst” si “findnext” specifice sistemului MS-DOS fac automat aceastã<br />

reducere a numelui, dar alte functii nu o fac si trebuie realizatã <strong>în</strong> programul de listare.<br />

O parte din functiile programului “dirlist” pot fi reutilizate si <strong>în</strong> alte programe:<br />

preluare optiuni si nume fisiere din linia de comandã, afisare numere <strong>în</strong>tregi foarte mari<br />

s.a.

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

Saved successfully!

Ooh no, something went wrong!