Sunteți pe pagina 1din 4

Fiiere Prelucrarea fiierelor implic operaii specifice acestora: - deschiderea i nchiderea fiierelor; - creearea fiierelor; - citirea nregistrrilor unui

fiier; - adugarea de nregistrri n fiier; - poziionarea ntr-un fiier; - tergerea unui fiier; Exist dou niveluri prin care se poate realiza lucrul cu fiiere: - primul nivel( inferior) face apel direct la sistemul de operare; - al doilea nivel( superior) utilizeaz structuri speciale de tip FILE Declararea unui fiier: FILE *pf pf descriptor de fiier; FILE structura de date de tip fiier; EX:
FILE *f1,*f2;

Deschiderea unui fiier: fopen pf=fopen(const char* cale, const char* mod); cale pointer ctre un ir de caractere care definete calea spre fiierul care se dechide; mod pointer ctre un ir de caractere care definete modul de prelucrare a fiierului; a. r : deschidere pentru citire; b. w: deschidere pentru scriere; c. a: deschidre pentru adaugare; d. r+: deschidre in citire/scriere; e. rb: citre binara; f. wb: scriere binara; i. r+b: citire si scriere binara; EX:
FILE *fin; fin=fopen("text.in","r"); // se deschide fisierul text.in din directorul curent in modul r: // citire OBS: I/O standard stdin: intrarea stdout: iesirea stderr: iesirea stdprn: iesirea

standard; standard; standard pentru erori; paralela pe imprimanta;

stdaux: comunicatie paralela.

Inchiderea unui fiier: Ex:

fclose

int fclose(pf);
fclose(fin);

Citirea i scrierea fiierelor : fscanf, fprintf, fgetc, fputc, fread, fwrite fread, fwrite - citirea/scrierea fiierlor binare. fread(ptr, size, n, pf) fwrite(ptr, size, n, pf) fgetc, fputc funcii folosite pentru prelucrarea pe caracter a unui fiier: citire/scriere fgetc(FILE *pf) fputc(int c,FILE *pf) EX:
FILE *fin; int ch='a'; fin=fopen("text.txt","w"); fputc(ch,fin); Secventa de copiere a intrarii standard la iesirea standard: while((c=getc(stdin))!=EOF) { putc(c,stdout); 1. }

fgets,fputs - Intrri/ieiri de iruri de caractere char* fgets(char *s,int n, FILE *pf) int fputs(const char *s, FILE *pf) EX:

FILE *fin; char sir[100]; fin=fopen("text.txt","r"); fgets(sir,100,fin); printf("Sirul citit este %s",sir); fclose(fin);

fprintf, fscanf Intrri/ieiri cu format


int fscanf(FILE* pf,const char* format,..) int fprintf(FILE* pf,const char* format,..)

Poziionarea ntr-un fiier: ftell, fseek long ftell(FILE *pf) int fseek(FILE *pf ,long deplasament, int origine)

ftell returneaza o valoare care reprezinta deplasamentul in octeti fata de inceputul fisierului; fseek pozitionarea intr-un anumit loc in fisier; Stergerea unui fisier: unlink int unlink(const char* cale)
OBS: fflush( FILE *pf) : vidarea zonei tampon a unui fisier;

Obs: int feof(FILE *dfisier)- intoarce o valoare nenula daca s-a detectat sfarsitul de fisier;

EX: 1.

#include <stdio.h> #include <string.h> void main() { FILE *pf; char text[25]; int i; pf=fopen("text.txt","w"); if(pf==NULL) { printf("Eroare!!"); exit(1); } strcpy(text," Randul:"); for(i=1;i<=5;i++) { fprintf(pf,"%s%d\n",text,i); } fclose(pf); getch(); } 2. Tiparirea unui fisier pe ecran( fputs) do { c=fgets(rand,100,pf); if(c) { printf(%s,rand); } } while(c);

T1: Sa se scrie un program care calculeaza numarul de caractere dintrun fisier( se considera in calcul si caracterele pentru rand nou); T2: Sa se scrie un program care creeaza o copie a fisierului de intrare intrare.txt cu numele iesire.txt.

Tema : Se da un fisier text: 1. Sa se determine numarul de linii din fisier. 2. Sa se creeze un nou fisier cu liniile din primul, aparand in ordine inversa. 3. Pe baza fisierului initial, sa se creeze un fisier in care nu mai apar carcaterele de sfarsit de linie, iar fiecare linie este precedata de lungimea ei. 4. Se da un fisier de intregi reprezentand numere de linii din fisierul initial. Sa se afiseze la imprimanta liniile din fisier in ordinea precizata de fisierul de intregi.

S-ar putea să vă placă și