Fisiere Programare C

download Fisiere Programare C

of 14

Transcript of Fisiere Programare C

  • 8/19/2019 Fisiere Programare C

    1/14

    Capitolul VII

    FIŞIERE

    7.1. Caracteristicile generale ale fişierelor 7.4.3. Prelucrarea la nivel de şir de caractere

    7.2. Desciderea unui fişier 7.4.4. Intr!ri"ieşiri for#atate7.3. $nciderea unui fişier 7.%. Intr!ri"ieşiri &inare7.4. Prelucrarea fişierelor te't 7.(. Po)i*ionarea +ntr,un fişier

    7.4.1. Prelucrarea la nivel de caracter 7.7. Func*ii utilitare -entru lucrul cu fişiere7.4.2. Prelucrarea la nivel de cuvnt 7.7. /lte o-era*ii cu fişiere

    7.1. C/R/C0ERI0ICIE EER/E /E FIŞIERE5R 

     Noţiunea de fişier desemnează o colecţie de informaţii memorată pe un suport permanent (de obicei discurimagnetice), percepută ca un ansamblu, căreia i se asociază un nume (în vederea conservării şi regăsirii

    ulterioare)

    Caracteristicile unui fişier (sub sistem de operare !"#$%") sunt & $ispozitivul logic de memorare (discul)' Calea (în structura de directoare) unde este memorat fişierul'  Numele şi etensia' tributele care determină operaţiile care pot fi efectuate asupra fişierului (de eemplu& R#read#onl* #

    citire' W#+rite#onl* scriere' RW#read#+rite citirescriere' H#-idden # nu se permite nici măcar vizualizarea'S#s*stem # fişiere sistem asupra cărora numai sistemul de operare poate realiza operaţii operaţii, etc)

    ucrul cu fişiere +n -rogra#are oferă următoarele avanta.e&

    /relucrarea de unei cantităţi mari de informaţie obţinută din diverse surse cum ar fi eecuţia prealabilă aunui alt program' "tocarea temporară pe suport permanent a informaţiei în timpul eecuţiei unui program pentru a evita

    supraîncărcarea memoriei de lucru' /relucrarea aceleeaşi colecţii de informaţii prin mai multe programe

    0n limba.ul C, operaţiile asupra fişierelor   se realizează cu a.utorul unor funcţii din biblioteca standard(stdio.h) 1ransferurile cu dipozitivele periferice (tastatură, monitor, disc, imprimantă, etc) se fac prinintermediul unor dispozitive logice identice numite strea#,uri (fluuri) şi prin intermediul sistemului deoperare 2n flu' de date este un fişier sau un dispozitiv fizic tratat printr#un pointer la o structură de tipFIE (din -eader#ul stdio.h) C3nd un program este eecutat, în mod automat, se desc-id următoarelefluuri de date predefinite, dispozitive logice (în stdio-)& stdin (standard input device) # dispozitivul standard de intrare (tastatura) # N"II C' stdout  (standard output device) # dispozitivul standard de ieşire (monitorul) # N"II C' stderr  (standard error output device) # dispozitivul standard de eroare (de obicei un fişier care

    conţine mesa.ele de eroare rezultate din eecuţia unor funcţii) # N"II C' stdaux  (standard auiliar* device) # dispozitivul standard auiliar (de obicei interfaţa serială auiliară)

    # specifice !"#$%"' stdprn (standard printer) # dispozitivul de imprimare # specifice !"#$%"

    0n abordarea limba.ului C (impusă de stdio.), toate elementele care pot comunica informaţii cu un programsunt percepute # în mod unitar # ca fluuri de date $atele introduse de la tastatură formează un  fişier deintrare (fişierul standard de intrare) $atele afişate pe monitor formează un  fişier de ieşire (fişierul 

    standard de ieşire) "f3rşitul oricărui fişier este indicat printr#un marca. de sfârşit de fişier  (end of file) 0ncazul fişierului standard de intrare, sf3rşitul de fişier se generează prin Ctrl+Z  (^Z) (sub !"#$%") (sauCtrl+D  sub 4inu) cest caracter poate fi detectat prin folosirea constantei simbolice EOF  (definită în

    56

  • 8/19/2019 Fisiere Programare C

    2/14

  • 8/19/2019 Fisiere Programare C

    3/14

    r & flu de date de intrare' desc-idere pentru citire'  %  & flu de date de ieşire' desc-idere pentru scriere (crează un fişier nou sau suprascrie conţinutul

    anterior al fişierului eistent)' a & flu de date de ieşire cu scriere la sf3rşitul fişierului, adăugare, sau crearea fişierului în cazul în

    care acesta nu eistă' & & etinde un flu de intrare sau ieşire la unul de intrareieşire' operaţii de scriere şi citire asupra

    unui fişier desc-is în condiţiile r, + sau a  ' & date binare' t & date tet (modul implicit)

     Exemple:"r+"  A desc-idere pentru modificare (citire şi scriere)'"w+"  A desc-idere pentru modificare (citire şi scriere)'"rb"  A citire binară'"wb"  A scriere binară'"r+b"  A citirescriere binară

    Func*ia freopen 9stdio.:sociază un nou fişier unui flu de date de.a eistent, înc-iz3nd legătura cu vec-iul fişier şi încerc3ndsă desc-idă una nouă, cu fişierul specificat :uncţia returnează pointerul către fluul de date specificat,sau NULL în caz de eşec (prototip în stdio.)FILE*freopen(const char*nue!fi"#const char*od#FILE *flu!date$;

    Func*ia o-en$esc-ide fişierul specificat conform cu restricţiile de acces precizate în apel Beturnează un întreg careeste un indicator de fişier sau #8 (în caz de eşec) (prototip în io.)

    int open(const char *nue!fi"ier# int acces )#int od$;

    Bestricţiile de acces se precizează prin aplicarea operatorului + (dis.uncţie logică la nivel de bit) întreanumite constante simbolice, definite în fcntl.h, cum sunt &

    O!,DOL - citire'

    O!/,OL - scriereO!,D/, - citire şi scriereO!C,E0 - creareO!022ED - adăugare la sf3rşitul fişieruluiO!E3 - interpretare CB#4:O!4I0, - nici o interpretare,

    Bestricţiile de mod de creare se realizează cu a.utorul constantelor&5!I,E0D - permisiune de citire din fişier 5!I/,IE -  permisiune de scriere din fişier, eventual legate prin operatorul DE

    Func*ia creat

    Crează un fişier nou sau îl suprascrie în cazul în care de.a eistă Beturnează indicatorul de fişier sau #8(în caz de eşec) /arametrul un_mod este obţinut în mod analog celui de la funcţia de desc-idere(prototip în io.)

    int creat(const char *nue!fi"ier# int un!od$;

    Func*ia creatne%Crează un fişier nou, conform modului specificat Beturnează indicatorul fişierului nou creat sau rezultatde eroare (#8), dacă fişierul de.a eistă (prototip în io.)

    int creatne%(const char *nue!fi"ier# int od$;

    $upă cum se observă, informaţia furnizată pentru desc-iderea unui fişier este aceeaşi în ambele abordări,diferenţa const3nd în tipul de date al entitaţii asociate fişierului Implementarea din io.h oferă un alt tip de

    control la nivelul comunicării cu ec-ipamentele periferice (furnizat de funcţia ioctrl), asupra căruia nuvom insista, deoarece desfăşurarea acestui tip de control este mai greoaie, dar mai profundă

    ?8

  • 8/19/2019 Fisiere Programare C

    4/14

    7.3. $CIDERE/ 88I FIŞIER 

    Func*ia fcloseint fclose(FILE *pf$;

    :uncţia înc-ide un fişier desc-is cu fopen  şi eliberează memoria alocată (zona tampon şi structura!L) Beturnează valoarea @ la înc-iderea cu succes a fişierului şi #8 în caz de eroare (prototip înstdio.)

    Func*ia fcloseall int fcloseall(6oid$;

    0nc-ide toate fluururile de date şi returnează numărul fluurilor de date înc-ise (prototip în stdio.)

    Func*ia close int close(int indicator$;

    0nc-ide un indicator de fişier şi returnează @ (în caz de succes) sau #8 în caz de eroare (prototip în io.)

    7.4. PRE8CR/RE/ FIŞIERE5R 0E;0

    $upă desc-iderea unui fişier, toate operaţiile asupra fişierului vor fi efectuate cu pointerul său %peraţiile decitire şi scriere într#un fişier tet pot fi& intrăriieşiri la nivel de caracter (de octet)' intrăriieşiri la nivel de cuv3nt (9 octeţi)' intrăriieşiri de şiruri de caractere' intrăriieşiri cu formatare

    Comunicarea de informaţie de la un fişier către un program este asigurată prin  funcţii de citire care transferăo cantitate de octeţi (unitatea de măsură în cazul nostru) din fişier într#o variabilă#program pe care o vomnumi buffer, ea însăşi av3nd sensul unei înşiruiri de octeţi prin declaraţia 6oid *'uf Comunicarea deinformaţie de la un program către un fişier este asigurată prin  funcţii de scriere care transferă o cantitate de

    octeţi dintr#o variabilă#program de tip buffer în fişier

    :işierele sunt percepute în limba.ul C ca fiind, implicit, secvenţiale (informaţia este parcursă succesiv,element cu element) /entru aceasta, at3t fluurile de date c3t şi indicatorii de fişier au asociat un indicator de poziţie curentă  în cadrul fişierului cesta este iniţializat la @ în momentul desc-iderii, iar operaţiile decitire, respectiv scriere, se referă la succesiunea de octeţi care începe cu poziţia curentă %perarea asuprafiecărui octet din succesiune determină incrementarea indicatorului de poziţie curentă

    7.4.1. PRE8CR/RE/ 88I FIŞIER / I

  • 8/19/2019 Fisiere Programare C

    5/14

     Exerci ţi u:  "ă se scrie un program care crează un fişier te't în care se vor scrie caracterele introduse de latastatură (citite din fişierul standard de intrare), p3nă la înt3lnirea caracterului FG = CtrlHG

    %in#&ude 'stdio.h(%in#&ude 'pro#ess.h()oid main*,int # i/0 !L 1pf#ar0

    #har mesa234"5n!ntrodu #ara#tere urmate de 6tr&+7 *6tr&+8 sub Linux95n"0#har eroare34"5n roare des#hidere fişier 5n"0whi&e*mesa23i4 put#har*mesa23i++40

    pf#arfopen*"f_#ar:.txt""w"0 crearea fişierului cu numele etern f_#ar:.txtif*pf#arNULL ,  i/0  whi&e*eroare3i4put#*eroare3i++4stdout0  exit*:0

     ;whi&e**#

  • 8/19/2019 Fisiere Programare C

    6/14

    tab3i4

  • 8/19/2019 Fisiere Programare C

    7/14

      fputs*sirstdout0 sau& puts*sir0afişarea (scrierea în fişierul standard de ieşire) şirului (liniei) citit din fişierul tet

      psirfRI"IEŞIRI F5R?/0/0E

    %peraţiile de intrareieşire formatate permit citirea, respectiv scrierea într#un fişier tet, impun3nd un anumitformat "e utilizează funcţiile fscanf  şi fprintf, similare funcţiilor s#anf  şi printf  (care permitcitireascrierea formatată de la tastaturămonitor) :uncţia fscanf

    int fscanf(FILE *pf# const char *forat# . . .$;

    :uncţia fprintfint fprintf(FILE *pf# const char *forat# . . .$;

    :uncţiile primesc ca parametri ficşi pointerul (pf ) spre tipul !L (cu valoarea atribuită la apelul funcţiei

    fopen), şi specificatorul de format (cu structură identică celui prezentat pentru funcţiile printf şi s#anf):uncţiile returnează numărul c3mpurilor cititescrise în fişier, sau #8 ($) în cazul detectării sf3rşituluifişierului sau al unei erori

    7.%. I0R>RI"IEŞIRI @I/RE

    Beamintim că fluurile de tip binar transferă blocuri de octeţi (fără nici o structură), neput3nd fi citite direct,ca fişierele tet (vezi paragraful ?8) Comunicarea de informaţie dintre un program şi un fişier esteasigurată prin funcţii de citirescriere care transferă un număr de octeţi, prin inter#ediul unui $uffer 

     %uncţiile de citire  Func*ia fread  

    Citeşte date dintr#un flu, sub forma a n blocuri (entităţi), fiecare bloc av3nd dimensiunea dim, într#un buffer (buf) Beturnează numărul de blocuri citite efectiv, sau #8 în caz de eroare (prototip în stdio.)

    si8e!t fread(6oid *'uf# si8e!t di# si8e!t n# FILE *flu!date$;

    Func*ia read  Citeşte dintr#un fişier (precizat prin indicatorul său, indi#ator) un număr de n octeţi şi îi memoreazăîn bufferul buf :uncţia returnează numărul de octeţi citiţi efectiv (pentru fişierele desc-ise în mod tetnu se numără simbolurile de sfirşit de linie), sau #8 în caz de eroare (prototip în io.)

    int read(int indicator# 6oid *'uf# unsi7ned n$;

     %uncţiile de scriere :işierele organizate ca date binare pot fi prelucrate cu a.utorul funcţiilor  fread   şi  f&rite. 0n acest caz, seconsideră că înregistrarea este o colecţie de date structurate numite articole 4a o citire se transferă într#ozonă specială, numită )ona ta#-on, un număr de articole care se presupune că au o lungime fiă

    Func*ia f%rite"crie informaţia (preluată din buffer, buf este pointerul spre zona tampon care conţine articolele citite)într#un flu de date, sub forma a n entităţi de dimensiune dim Beturnează numărul de entităţi scriseefectiv, sau #8 în caz de eroare (prototip în stdio.)si8e!t f%rite(const 6oid *'uf# si8e!t di# si8e!t n# FILE *fl!date$;

    Func*ia %rite 

    "crie într#un fişier (desemnat prin indicatorul său, indi#ator) un număr de n octeţi preluaţi dintr#un buffer (buf este pointerul spre acesta) Beturnează numărul de octeţi scrişi efectiv sau #8 în caz de

    ?7

  • 8/19/2019 Fisiere Programare C

    8/14

    eroare (prototip în io.)int %rite(int indicator# 6oid *'uf# unsi7ned n$;

     Exerciţu: "ă se scrie un program care crează un fişier binar în care se vor introduce numere reale, nenule%in#&ude 'iostream.h(%in#&ude 'stdio.h(int main*

     , !L 1f0 doub&e nr0 int x0  if **f fopen*"test_nrb.dat" "wb" NULL desc-idere flu binar, scriere  , #out''"5nNu se poate des#hide fişieru& test_nrb.dat"''?5n?0  return :0  ;  #out''"5n!ntrodu#eBi numere*diferite de / terminate #u un /9"''?5n?0  #in((nr0  whi&e*nr=/  ,

      xfwrite*Cnr siDeof*nr : f0 scriere în fişier   #in((nr0  ;  f#&ose*f0

      return /0;

     Exemplu: "ă se scrie un program ce citeşte dintr#un fişier binar numere reale, nenule%in#&ude 'iostream.h(%in#&ude 'stdio.h(int main* , !L 1f0 doub&e buf0  if **f fopen*"test_nrb.dat" "rb" NULL  ,  #out''"5nNu se poate des#hide fişieru& test_nrb.dat"''?5n?0  return :0  ;

      #out''"5nNumere&e nenu&e #itite din fişier sunt9"''?5n?0  whi&e**fread*Cbuf siDeof*buf : f:

    funcţia sizeof(buf) care returneaza numarul de octeţi necesari variabilei buf  #out''buf''" "0  f#&ose*f0  #out''?5n?0  return /0;

    7.(. P5AIBI5/RE/ $0R,8 FIŞIER 

    /e l3ngă mecanismul de poziţionare implicit (asigurat prin operaţiile de citire şi scriere) se pot folosi şioperaţiile de poziţionare eplicită

    Func*ia fsee9int fsee9(FILE *pf# lon7 deplasaent# int referin:a$;

    :uncţia deplasează capul de citirescriere al discului, în vederea prelucrării înregistrărilor fişieruluiîntr#o ordine oarecare :uncţia setează poziţia curentă în fluul de date la n octeţi faţă de referinBE)&  dep&asament A defineşte numărul de octeţi peste care se va deplasa capul discului'

    referinBa A poate avea una din valorile&@ # începutul fişierului (SF_SG)'8 # poziţia curentă a capului (SF_6UR)'9 # sf3rşitul fişierului (SF_N8)

    :uncţia returnează valoarea zero la poziţionarea corectă şi o valoare diferită de zero în caz de eroare(prototip în stdio.)

    ?5

  • 8/19/2019 Fisiere Programare C

    9/14

    Func*ia lsee9int lsee9(int indicator# lon7 n# int referinta$;

    "eteaza poziţia curentă de citirescriere în fişier la n octeţi faţa de referinBE Beturnează valoarea @ încaz de succes şi diferită de zero în caz de eroare (prototip în io.)

    Func*ia f7etposint f7etpos(FILE *flu!date# fpos!t *po8i:ie$;

    $etermină poziţia curentă (pointer către o structură, fpos_t, care descrie această poziţie în fluul dedate) 0nscrie valoarea indicatorului în variabila indicată de poDiBie Beturnează @ la determinarea cusucces a acestei poziţii sau valoare diferită de zero în caz de eşec "tructura care descrie poziţia poate fitransmisă ca argument funcţiei fsetpos (prototip în stdio.)

    Func*ia fsetposint fsetpos(FILE *flu!date# const fpos!t *po8i:ie$;

    "etează poziţia curentă în fluul de date (atribuie indicatorului valoarea variabilei indicate poDiBie),la o valoare obţinută printr apelul funcţiei fistă funcţii pentru modificarea valorii indicatorului de poziţie şi de determinare a poziţiei curente aacestuia Func*ia ftell

    lon7 ftell(FILE *pf$;

    Indică poziţia curentă a capului de citire în fişier :uncţia returnează o valoare de tip long int carereprezintă poziţia curentă în fluul de date (deplasamentul în octeţi a poziţiei capului faţă de începutulfişierului) sau #84 în caz de eroare (prototip în stdio.)

    Func*ia telllon7 tell(int indicator$;

    Beturnează poziţia curentă a capului de citirescriere în fişier (eprimată în număr de octeţi faţă deînceputul fişierului), sau #84 în caz de eroare (prototip în io.)

    Func*ia re%ind 6oid re%ind(FILE *flu!date$;

    /oziţionează indicatorul la începutul fluului de date specificat ca argument (prototip în stdio.)

    7.7. F8CBII 80II0/RE PE0R8 8CR8 C8 FIŞIERE

    :uncţii de testare a sfârşitului de fişier  Func*ia feof

    int feof(FILE *flu!date$;

    Beturnează o valoare diferită de zero în cazul înt3lnirii sf3rşitului de fişier sau @ în celelalte cazuri(prototip în stdio.)

    Func*ia eofint eof(int indicator$;

    Beturnează valoarea 8 dacă poziţia curentă este sf3rşitul de fişier, @ dacă indicatorul este poziţionat înaltă parte, sau #8 în caz de eroare (prototip în io.)

    :uncţii de golire a fluxurilor de date Func*ia fflush

    int fflush(FILE *flu!date$;

    Koleşte un fluul de date specificat ca argument Beturnează @ în caz de succes şi #8 ( $) în caz de

    eroare (prototip în stdio.)

    ??

  • 8/19/2019 Fisiere Programare C

    10/14

    Func*ia flushallint flushall(6oid$;

    Koleşte toate fluurile de date eistente, pentru cele de scriere efectu3nd şi scrierea în fişiereBeturnează numărul de fluuri asupra cărora s#a efectuat operaţia (prototip în stdio.)

    7.7. /0E 5PER/BII C8 FIŞIERE:uncţii care permit operaţii ale sistemului de operare asupra fişierelor  Func*ia reo6e 

    int reo6e(const char *nue!fi"ier$;

    Lterge un fişier Beturnează valoarea @ pentru operaţie reuşită şi #8 pentru operaţie eşuată (prototip înstdio.)

     

    Func*ia renaeint renae(const char *nue!6echi# const char *nue!nou$;

    Bedenumeşte un fişier Beturnează @ pentru operaţie reuşita şi #8 în cazul eşecului (prototip în stdio.)

    Func*ia unlin9int unlin9(const char *nue!fi"ier$;

    Lterge un fişier Beturnează @ la operaţie reuşită şi #8 la eşec' dacă fişierul are permisiune read#onl*,funcţia nu va reuşi operaţia (prototip în io., stdio.)

    :uncţii care permit manipularea aceluiaşi fişier prin două indicatoare de fişier independente Func*ia dup

    int dup(int indicator$;

    $uplică un indicator de fişier Beturnează noul indicator de fişier pentru operaţie reuşită sau #8 în cazuleşecului (prototip în io.)

    Func*ia dupint dup(int indicator!6echi# int indicator!nou$;

    $uplică un indicator de fişier la valoarea unui indicator de fişier de.a eistent Beturnează @ în caz desucces şi #8 în caz de eşec (prototip în io.)

    :uncţii pentru aflarea sau modificarea dimensiunii în octeţi a fişierelor  Func*ia chsi8e

    int chsi8e(int indicator# lon7 lun7ie$;

    !odifică dimensiunea unui fişier, conform argumentului &un

  • 8/19/2019 Fisiere Programare C

    11/14

    Func*ia creattepint creattep(char *cale# int attri'$;

    Crează un fişier unic ca nume, cu atributele specificate în argumentul attrib (prin  fmode '$_GG sau$_I!NJRK), în directorul dat în argumentul #a&e Beturnează indicatorul (-andler#ul) către fişierulcreat sau #8 (şi setarea errno) în cazul eşecului (prototip în io.)

     Exemplu:  "ă se creeze un fişier binar, care va conţine informaţiile despre anga.aţii unei întreprinderi& nume,marca, salariu "ă se afişeze apoi conţinutul fişierului%in#&ude'iostream.h(%in#&ude 'stdio.h(%in#&ude '#tpe.h(tpedef stru#t  , #har nume3@/40int mar#a0doub&e sa&ariu0  ;an

  • 8/19/2019 Fisiere Programare C

    12/14

    s#rieb* # scriere în acces direct în fişier'#itmat* # citirea de la terminal a informaţiilor despre un material'afismat* # afişarea informaţiilor despre un material (apelată de &ist)'&un*fdep&SF_SG0  if*fwrite*asiDeof*materia&:f=:,#out''"roare de s#riere in fişier ="''?5n?0

    M@

  • 8/19/2019 Fisiere Programare C

    13/14

     exit*:0 ; ;

    6oid citire'(int nr#6oid *a#FILE *f$ citire din fişierul binar  ,&on< dep&*nr-:1siDeof*materia&0  fsee>*fdep&SF_SG0  if*fread*asiDeof*materia&:f=:

    ,#out''"roare de #itire din fişier ="''?5n?0

     exit*@0 ; ;

    6oid afisat(aterial *a$ afişarea informaţiilor despre un anumit material ,  int i0  if*a-(#odm

    ,#out''"6od materia& 9 "''a-(#odm''?5n?0 #out''"8enumire materia&9 "''a-(den_mat''?5n?0 #out''"6antitaBi #ontra#tate9"''?5n?0 for*i/0i'P0i++  #out''"6ontra#tat "''i''" 9 "''a-(#ant_#3i4''?5n?0 #out''"6antitaBi re#epBionate9"''?5n?0 for*i/0i'P0i++

      #out''"Re#eptionat "''i''" 9 "''a-(#ant_r3i4''?5n?0 #out''"Sto# 9 "''a-(sto#''?5n?0 #out''"Unitate de masura9 "''a-(unit_mas''?5n?0 #out''"reB unitar 9 "''a-(preB''?5n?0 ;

      e&se #out''"J#est arti#o& a fost şters ="''?5n?0 ;

    6oid citat(aterial *a$ citirea informaţiilor despre un anumit material ,  int i0f&oat temp0  #out''"!ntrodu#eti #odu& materia&u&ui */nd9 "0#in((a-(#odm0  if*a-(#odm/ return0  #out''"!ntrodu#eBi denumirea materia&u&ui 9 "0#in((a-(den_mat0

      #out''"!ntrodu#eBi unitatea de mEsurE 9 "0#in((a-(unit_mas0  #out''"!ntrodu#eBi preBu& 9 "0#in((temp0a-(preBtemp0  #out''"!ntrodu#eBi #antitaBi&e #ontra#tate 9 "''?5n?0  for*i/0i'P0i++  ,#out''"6ontra#tat "''i+:''" 9 "0#in((a-(#ant_#3i40 ;  #out''"!ntrodu#eBi #antitaBi&e re#epBionate 9 "''?5n?0  for*i/0i'P0i++  ,#out''"Re#eptionat "''i+:''" 9 "0#in((a-(#ant_r3i40 ; ;

    6oid crefis($ desc-idere fisier,

      if**pffopen*"materia&.dat""r"=NULL  #out''"işieru& exista de2a ="''?5n?0

    e&se  pffopen*"materia&.dat""w"0

      f#&ose*pf0 ;

    6oid adau7($ adăugare de noi materiale ,

      int na0 pffopen*"materia&.dat""a"0desc-idere pentru append  na&un

  • 8/19/2019 Fisiere Programare C

    14/14

    6oid odif($ modificarea informaţiilor despre un material eistent ,  int na0 #har #h0 pffopen*"materia&.dat""r+"0  do  ,#out''"Numaru& arti#o&u&ui de modifi#at este */N89 "0#in((na0  if*na  ,#itireb*naCmatpf0

      afismat*Cmat0  #out''"Modifi#aBi arti#o& *8N O 9"0  do

     , #in((#h0  #htoupper*#h0 ; whi&e*#h=?8? CC #h=?N?0

      if*#h?8?  ,#itmat*Cmat0  s#rieb*naCmatpf0  ;

      ;  ;whi&e*na0  f#&ose*pf0 ;

    6oid ster7($ ştergerea din fişier a unui material , int n0&on< int na0 pffopen*"materia&.dat""r+"0  mat.#odm/0 na&un