Scrigroup - Documente si articole

     

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


Scrierea intr-un fisier

c



+ Font mai mare | - Font mai mic



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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 807
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