Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte 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





DOCUMENTE SIMILARE

Trimite pe Messenger
Elementele limbajului C++ - Caractere - Tipuri de date in limbajul C++
PROGRAMAREA STRUCTURILOR DE DATE IN C++
Afiseaza lista concatenata cu ea insasi dar fara valoarea primului nod din lista
Structura de tip stiva
Tablouri multi-dimensionale
Tablouri de structuri
Operatorul adresa
LISTE - Sortare prin selectie
LISTE CIRCULARE. STIVE. COZI
Probleme rezolvate in C la informatica

TERMENI importanti pentru acest document

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 517
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 2022 . All rights reserved

Distribuie URL

Adauga cod HTML in site