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.
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.