Documente Academic
Documente Profesional
Documente Cultură
2
Programare C
Cursul 4
Fisiere text
• Limbajul C considera ca orice fisier este o colectie de octeti care vor fi interpretati
de program.
Declararea si deschiderea fisierelor
FILE * fopen (const char * nume_fisier, const char *
mod_deschidere);
mod_deschidere poate fi:
- pentru citire: 'r' - deschide un fisier existent. Pointerul de pozitie se afla la
inceputul fisierului;
- pentru scriere: 'w' - deschide un fisier nou, ori suprascrie in fisierul cu acelasi
nume. Pointerul de pozitie se afla la inceputul fisierului.
- pentru adaugare: 'a' - daca fisierul nu exista, sistemul de operare il creeaza.
Pointerul de pozitie se afla la sfarsitul fisierului.
Functia fopen returneaza un pointer de fisier. Daca fisierul indicat nu a putut fi
deschis, pointerul va avea valoarea NULL.
Exemplu:
FILE *f;
f = fopen("matrice.in", "r");
Citirea si scrierea in fisier
• Prelucrarea datelor din fisiere se poate face: caracter cu caracter sau
linie cu linie.
Prelucrarea caracter cu caracter
Vor fi utilizate functiile: fgetc() si fputc().Sintaxa:
int fgetc(FILE * pointer_fisier); // pentru citire
int fputc(int c, FILE * pointer_fisier); // pentru afisare
#include <stdio.h>
int main(int argument, char *p[])
{
while(*++p)
if(remove(*p))
printf("Eroare! %s \n", *p);
getch();
}
Exemplu
Programul citeste un sir de numere, le elimina zerourile, apoi le afiseaza din nou.
• #include <stdio.h> int main()
#include <conio.h> {
#define NMAX 100 int n, i;
long nr, numere[NMAX];
long eliminare_zero(long nr) printf("Cate numere vor fi
{ citite? ");
int uc; scanf("%d", &n);
long x=0, inv=0; printf("Introduceti cele %d
while(nr!=0) numere:\n", n);
{ for(i=0; i < n; i++)
uc=nr%10; {
if(uc!=0) printf("nr%d = ", i+1);
x=x*10+uc; scanf("%ld", &nr);
nr/=10; numere[i]=eliminare_zero(nr);
} }
while(x!=0) printf("\n\nDupa eliminarea
{ zerourilor, numerele
inv=inv*10+(x%10); sunt:\n\n");
x/=10; for(i=0; i < n; i++)
} printf("%ld \n", numere[i]);
return inv; printf("Apasa o tasta pentru a
} inchide...");
getch();
return 0;
}
Recursivitate
• Recursivitatea este un mecanism general de elaborare a programelor.
Mecanismul recursivitatii consta in posibilitatea ca un subprogram sa se
autoapeleze.
Recursivitatea s-a utilizat initial pentru transcrierea formulelor matematice descrise
recursiv, ulterior extinzandu-se pentru elaborarea multor algoritmi.
Exemple:
1. La un televizor se cupleaza o camera video care filmeaza ecranul televizorului.
Pe ecran se va vedea un televizor care va prezenta un televizor... Vom vedea o serie
de televizoare din ce in ce mai mici.
2. Un descendent al unei persoane este un copil al sau un descendent al unui copil al
sau.
In exemplul 2 pentru a defini notiunea de "descendent" am folosit notiunea insasi.
• Spunem ca o notiune este definita recursiv daca in cadrul definitiei intervine insasi
notiunea care se defineste.
Intalnim procese care se exprima in termeni recursivi, sau in matematica apar
frecvent relatii recursive, denumite si relatii de recurenta.
• 1. Cea mai simpla si mai familiara functie
exprimata in termeni recursivi este factorialul: