Sunteți pe pagina 1din 4

PROGRAMARE I TEHNICI DE PROGRAMARE II

Lucrarea de laborator nr.3


Obiective:
nsu#irea lucrului cu fi#iere text &n limbajul C.
nsu#irea lucrului cu func(ii &n limbajul C.
Fi#iere text.
Lucrul cu fi#iere text &n limbajul C presupune parcurgerea urm)toarelor etape:
1. Deschiderea fi#ierului
2. Prelucr)ri asupra fi#ierului (citiri, scrieri)
3. nchiderea fi#ierului
1. Deschiderea unui fi#ier se realizeaz) cu func(ia fopen. n continuare este
prezentat prototipul func(iei fopen:
FILE *fopen(char *nume_fis,char *mod), unde nume_fis este un #ir de caractere
care con(ine numele fi#ierului iar mod este un #ir de caractere care va preciza
opera(iile ce vor fi efectuate asupra fi#ierului precum #i tipul de fi#ier.
Dac) opera(ia de deschidere a fi#ierului a decurs corect, pointerul &ntors de
fopen este diferit de NULL. Dac), din diverse motive, deschiderea nu s-a putut
efectua corect, fopen va &ntoarce NULL, fapt ce trebuie testat &nainte de a trece
la alte prelucr)ri.
Ex:
FILE *fis_in;
fis_in=fopen(in.txt!,!rt!);
if(fis_in==NULL)
{
printf(Eroare la deschiderea fisierului "in.txt#);
getch();
}
2 Prelucr)ri asupra fi#ierului. Opera(ii de citire, scriere.
a) Citirea din fi#ier
a1) Citirea unui caracter. Aceasta se realizeaz) utiliz,nd func(ia fgetc.
Prototipul: int fgetc(FILE *f)
Ex:
char c;
FILE *fis_in;
//$$$
c=fgetc(fis_in);
//$$$
Ex: Afi#area con(inutului unui fi#ier text
#include<stdio.h>
#include<conio.h>
void main(void)
{
FILE *fin;
char c;
clrscr();
fin=fopen("in.txt","rt"); //deschiderea fisierului, pentru citire
if(fin==NULL) //se testeaza daca deschiderea fisierului s-a efectuat cu succes
{
printf("Eroare la deschiderea fisierului in.txt");
getch();
return;
}
while((c=fgetc(fin))!=EOF) //citirea din fisier
putc(c,stdout); //afisarea caracterului citit din fisier
fclose(fin); //inchiderea fisierului
getch();
}
a2) Citirea unui #ir de caractere. Aceasta se realizeaz) utiliz,nd func(ia fgets.
Prototipul: char* fgets(char *s, int n, FILE *f)
Ex:
char sir[50];
FILE *fis_in;
//$$$.
fgets(sir,50,fis_in); //citirea in tabloul s a maxim 50 caractere
//$$$.
a3) Func(ia fscanf. Aceast) func(ie este similar) func(iei scanf, cu precizarea c)
datele nu sunt citite de la tastatur), ci dintr-un fi#ier. Func(ia fscanf returneaz)
num)rul de valori citite din fi#ier.
Prototipul: int fscanf(FILE *f, char *format, $)
Dac) primul argument al func(iei este stdin atunci datele vor fi citite din fi#ierul
standard de intrare (tastatura).
Ex:
int n,m;
FILE *fis_in;
//$$$
fscanf(fis_in,!%d%d!,&n,&m);
//$$$.
b) Scrierea &n fi#ier
b1) Scrierea unui caracter &ntr-un fi#ier. Aceasta se realizeaz) utiliz,nd func(ia
fputc.
Prototipul: int fputc(int c, FILE *f);
Ex:
char c;
c=%a%;
FILE *fis_out;
//$$$.
fputc(c,fis_out);
//$$$.
Ex: Copierea con(inutului unui fi#ier de intrare &ntr-un fi#ier de ie#ire.
#include<stdio.h>
#include<conio.h>
void main(void)
{
FILE *fin,*fout;
char c;
clrscr();
fin=fopen("in.txt","rt"); //deschiderea fisierului de intrare, pentru citire
if(fin==NULL) //se testeaza daca deschiderea fisierului s-a efectuat cu succes
{
printf("Eroare la deschiderea fisierului in.txt");
getch();
return;
}
fout=fopen("out.txt","wt"); //deschiderea fisierului de iesire, pentru scriere
if(fout==NULL) //se testeaza daca deschiderea fisierului s-a efectuat cu succes
{
printf("Eroare la deschiderea fisierului out.txt");
getch();
return;
}
while((c=fgetc(fin))!=EOF)
fputc(c,fout); //scrierea in fisierul de iesire, a caracterului citit din fisierul de intrare
fclose(fin); //inchiderea fisierului de intrare
fclose(fout); //inchiderea fisierului de iesire
printf("Copierea fisierului in.txt in fisierul out.txt s-a realizat cu succes");
printf("\nApasati o tasta pentru a reveni in program !");
getch();
}
b2) Scrierea unui #ir de caractere &ntr-un fi#ier. Aceasta se realizeaz) utiliz,nd
func(ia fputs.
Prototipul: fputs (const char *s, FILE *f)
Ex:
char sir[100];
FILE *fis_out;
//$$$.
strcpy(sir,!Acest sir va fi scris in fisier!);
fputs(sir,fis_out);
//$$$..
b3) Functia fprintf.
Prototipul: int fprintf(FILE *f, char *format, $)
Dac) primul argument al func(iei fprintf este stdout atunci datele vor fi scrise la
ie#irea standard(monitor)
Ex:
int n,m;
n=2;
m=4;
FILE *fis_out;
//$$$.
fprintf(fis_out,!%d %d!,n,m);
//$$$.
3. nchiderea fi#ierului se realizeaz) cu func(ia fclose.
Prototipul: int fclose(FILE *f)
Ex:
FILE *fis_in;
//$$$.
fclose(fis_in);
//$$$.
Tema de realizat n timpul laboratorului
1. Testa%i toate exemplele prezentate.
2. Scrie%i un program C care va afi#a meniul urm&tor #i va efectua
prelucr&rile corespunz&toare.
C. Citeste de la tastatur& numele unui fisier text
F. Citeste din fisier un sir de elemente intregi
A. Afiseaza sirul citit
M. Inmulteste fiecare element din sir cu o constanta
I. Informa%ii autor
X. Ie#ire