CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
|
TERMENI importanti pentru acest document |
|
Scrierea intr-un fisier
Scrierea intr-un fisier se realizeaza folosind functia _write. Se presupune ca fisierul respectiv a fost in prealabil deschis prin functiile _open sau _creat. Ea este asemanatoare cu functia _read, doar ca se realizeaza transferul de date in sens invers si anume din memorie pe suportul fiierului. Functia _write, ca si _read, se apeleaza printr-o atribuire de forma:
nr = _read(df,zt,n)
unde:
nr - este o variabila de tip intreg careia i se atribuie numarul de octeti scrisi in fisier.
df - este descriptorul de fisier returnat de functia _open la deschiderea sau _creat la crearea fisierului.
zt - este un pointer spre zona tampon definita de utilizator, zona din care se face scrierea.
n - este dimensiunea zonei tampon sau numarul de octeti care se doreste sa se scrie.
Definitia functiei este:
int _write( int handle, const void *buffer, unsigned int count );
Functia _write scrie count octeti din buffer in fisierul asociat cu descriptorul handle. Operatia de scriere incepe la pozitia curenta a pointerului de fisier asociat cu fisierul dat. Daca fisierul este deschis cu indicatorul _O_APPEND, operatia de scriere incepe la sfarsitul fisierului. Dupa o operatie de scriere pointerul de fisier este incrementat cu numarul de biti scrisi efectiv.
Daca fisierul a fost deschis in mod text (implicit), atunci _write trateaza CTRL/Z drept un caracter ce indica sfarsitul logic al fisierului. Cand se scrie intr-un dispozitiv, _write trateaza CTRL/Z din buffer drept terminator al operatiei de iesire.
In general trebuie ca la revenirea din functia _write sa avem nr=n, ceea ce semnifica faptul ca s-au scris pe disc exact numarul de biti din buffer. In caz contrar scrierea este eronata: aceasta semnifica faptul ca pe disc a ramas mai putin spatiu (in octeti) decat numarul de octeti ai bufferului. Daca valoarea returnata este -1, se semnalizeaza esecul operatiei de scriere. In acest caz variabila globala errno poate avea una din valorile EBADF (care semnifica un descriptor de fisier invalid sau ca fisierul nu a fost deschis pentru scriere) sau ENOSPC (care semnifica lipsa spatiului pe disc pentru operatia de scriere).
Functia _write poate fi utilizata pentru a scrie pe iesirile standard (display). Astfel, pentru a scrie pe iesirea standard identificata prin stdout se foloseste descriptorul 1, iar pentru a scrie pe iesirea standard pentru erori, stderr, se foloseste descriptorul de fisier 2. De asemenea, in acest caz nu este nevoie sa apelam functia _open sau _creat deoarece fisierele respective se deschid automat la lansarea programului. Exemplu:
/*Acest program deschide un fisier pentru scriere si foloseste _write pentru a scrie octeti in fisier*/
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
char buffer[]='This is a test of '_write' function';
void main( void )
In urma executiei programului, se va afisa mesajul:
Wrote 36 bytes to file
Press any key to continue
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 879
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved