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.

while (scanf ("%s %f ", s.nume, &s.medie) != EOF)<br />

fwrite(&s,sizeof(s),1,f);<br />

fclose (f);<br />

}<br />

// afisare continut fisier pe ecran<br />

void listare (char* numef) {<br />

FILE * f; Elev e;<br />

f=fopen(numef,"rb"); assert (f != NULL);<br />

while (fread (&e,sizeof(e),1,f)==1)<br />

printf ("%-25s %6.2f \n",e.nume, e.medie);<br />

fclose (f);<br />

}<br />

// adaugare articole la sfarsitul unui fisier existent<br />

void adaugare (char * numef) {<br />

FILE * f; Elev e;<br />

f=fopen(numef,"ab"); assert (f != NULL);<br />

printf (" nume si medie ptr. fiecare student : \n\n");<br />

while (scanf ("%s%f ",e.nume, &e.medie) != EOF)<br />

fwrite(&e,sizeof(e),1,f);<br />

fclose (f);<br />

}<br />

Functii pentru acces direct la date<br />

Accesul direct la date dintr-un fisier este posibil numai pentru un fisier cu articole de<br />

lungime fixã si <strong>în</strong>seamnã posibilitatea de a citi sau scrie oriunde <strong>în</strong>tr-un fisier, printr-o<br />

pozitionare prealabilã <strong>în</strong>ainte de citire sau scriere. Fisierele mari care necesitã<br />

regãsirea rapidã si actualizarea frecventã de articole vor contine numai articole de<br />

aceeasi lungime.<br />

In C pozitionarea se face pe un anumit octet din fisier, iar functiile standard permit<br />

accesul direct la o anumitã adresã de octet din fisier. Functiile pentru acces direct din<br />

permit operatiile urmãtoare:<br />

- Pozitionarea pe un anumit octet din fisier ("fseek").<br />

- Citirea pozitiei curente din fisier ("ftell").<br />

- Memorarea pozitiei curente si pozitionare ("fgetpos", "fsetpos").<br />

Pozitia curentã <strong>în</strong> fisier este un numãr de tip long, pentru a permite operatii cu fisiere<br />

foarte lungi.<br />

Functia "fseek" are prototipul urmãtor :<br />

int fseek (FILE * f, long bytes, int origin);<br />

unde "bytes" este numãrul de octeti fatã de punctul de referintã "origin", care poate fi:<br />

0 = <strong>în</strong>ceputul fisierului, 1 = pozitia curentã, 2 = sfârsitul fisierului.<br />

Functia "fseek" este utilã <strong>în</strong> urmãtoarele situatii:<br />

- Pentru repozitionare pe <strong>în</strong>ceput de fisier dupã o cãutare si <strong>în</strong>ainte de o altã cãutare<br />

secventialã <strong>în</strong> fisier (fãrã a <strong>în</strong>chide si a redeschide fisierul)

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

Saved successfully!

Ooh no, something went wrong!