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.
In general pot fi portabile programele de aplicatii care folosesc numai functii<br />
standard pentru intrãri-iesiri (printf, scanf s.a.) si pentru alte servicii ale sistemului de<br />
operare gazdã (obtinere orã curentã, atribute fisiere etc.).<br />
Programele care folosesc ecranul <strong>în</strong> mod grafic (cu ferestre, butoane, diverse forme<br />
si dimensiuni de caractere etc.) sau care necesitã pozitionarea pe ecran <strong>în</strong> mod text sunt<br />
dependente de sistemul de operare gazdã (Windows, Linux etc.).<br />
Pentru mãrirea portabilitãtii programelor C standardul POSIX (Portable Operating<br />
System) propune noi functii unice <strong>în</strong> C pentru acces la servicii care ar trebui asigurate<br />
de orice sistem de operare compatibil POSIX.<br />
Aflarea fisierelor dintr-un director si a atributelor acestora este un exemplu de<br />
operatii care depind de sistemul gazdã si nu se exprimã prin functii standard C, desi<br />
sunt necesare <strong>în</strong> multe programe utilitare: listare nume fisiere, arhivare fisiere, s.a. Mai<br />
exact, operatiile pot fi exprimate prin una sau douã functii, dar argumentele acestor<br />
functii (structuri sau pointeri la structuri) depind de sistemul gazdã.<br />
De exemplu, programul urmãtor pentru afisarea numelor fisierelor dintr-un director<br />
este utilizabil numai cu biblioteci GNU “gcc” (cum este si Dev-Cpp) :<br />
#include <br />
#include <br />
int main ( ) {<br />
struct _finddata_t fb;<br />
long first; int done=0;<br />
first = _findfirst(path,&fb);<br />
while (!done) {<br />
puts (fb.name);<br />
done = _findnext(first,&fb);<br />
}<br />
}<br />
Acelasi program <strong>în</strong> varianta mediului BorlandC 3.1 :<br />
#include <br />
#include <br />
void main ( ) {<br />
struct ffblk fb;<br />
char mask[10]="*.*";<br />
int done;<br />
done = findfirst(mask,&fb,0xFF);<br />
while (!done) {<br />
puts( fb.ff_name);<br />
done = findnext(&fb);<br />
}<br />
}<br />
Perechea de functii “findfirst”, findnext” realizeazã enumerarea fisierelor dintr-un<br />
director (al cãror numãr nu se cunoaste) si constituie elemente ale unui mecanism<br />
iterator (enumerator) folosit si <strong>în</strong> alte situatii de programare.