Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Pozitionarea intr-un fisier

c



+ Font mai mare | - Font mai mic



Pozitionarea intr-un fisier

Operatiile de citire/scriere intr-un fisier se executa secvential, astfel incat:

fiecare apel al functiei _read citeste inregistrarea din pozitia urmatoare din fisier



fiecare apel al functiei _write scrie inregistrarea in pozitia urmatoare din fisier.

Acest mod de acces la fisier se numeste secvential si el este util cand dorim sa prelucram fiecare inregistrare a fisierului. In practica apar insa si situatii in care noi dorim sa scriem si sa citim inregistrari intr-o ordine oarecare. In acest caz se spune ca accesul la fisier este aleator. Pentru a realiza un acces aleator este nevoie sa ne putem pozitiona oriunde in fisierul respectiv O astfel de pozitionare este posibila pe hard-uri si floppy-uri prin functia _lseek.

Definitia functiei este:

long _lseek( int handle, long offset, int origin );

Functia _lseek muta pointerul de fisier asociat cu descriptorul handle (df) pe o noua locatie care este situata la offset octeti de origin. Urmatoarea operatie de citire/scriere se va efectua de la noua locatie. Argumentul origin trebuie sa fie una dintre urmatoarele constante, definite in STDIO.H:

SEEK_SET - inceputul fisierului (valoare 0)

SEEK_CUR - pozitia curenta a pointerului de fisier (valoare 1)

SEEK_END - sfarsitul fisierului (valoare implicita 2)

Functia _lseek returneaza valoarea 0 la pozitionare corecta si -1 la incident. Ea poate fi apelata prin:

v = _lseek(df, deplasament, origine)

unde:

v - este o variabila de tip intreg careia i se atribuie valoarea returnata de catre functie (0 sau -1)

df - este descriptorul de fisier (handle) a carui valoare a fost definita la deschiderea sau crearea fisierului.

deplasament - este o variabila de tip long si contine numarul de octeti peste care se va deplasa capul de citire/scriere al discului.

origine - are una din valorile

0 - deplasamentul se socoteste de la inceputul fisierului;

- deplasamentul se socoteste din pozitia curenta a capului de citire/scriere;

- deplasamentul se socoteste de la sfarsitul fisierului.

Mentionam ca prin apelul lui _lseek nu se realizeaza nici un fel de transfer de informatie ci numai pozitionarea in fisier. Operatia urmatoare realizata prin apelul functiei _read sau _write se va realiza din aceasta pozitie. Spre exemplu, apelul:

v = _lseek(df, 0l, 2)

permite sa se faca pozitionarea la sfarsitul fisierului. In continuare se pot adauga articole folosind functia _write.

Pozitionarea la inceputul fisierului se face prin apelul:

v = _lseek(df, 0l, 0)

Exemplu:

#include <io.h>

#include <fcntl.h>

#include <stdlib.h>

#include <stdio.h>

void main( void )

In urma executiei programului se va afisa:

Pozitia pentru inceputul fisierului = 0

Pozitia curenta = 10

Pozitia ultima este = 36

Press any key to continue



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 772
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved