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.

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.

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

Saved successfully!

Ooh no, something went wrong!