Documente Academic
Documente Profesional
Documente Cultură
n general prin ier se nelege o colecie ordonat de elemente, numite nregistrri. Fiecare ier are o nregistrare care marcheaz sfritul de ier. n cazul ierelor introduse de la tastatur, sfritul de ier se genereaz prin secvena: <CTRL>+Z
Operaii standard :
deschiderea unui ier citirea nregistrrilor unui ier actualizarea unui ier adugarea de nregistrri la un ier poziionarea ntr-un ier tergerea unui ier
Pentru a lucra cu un ier n C, se utilizeaz o variabil de tip pointer ctre structura FILE . Aceast structur, mpreun cu funciile specice sunt definite n ierul stdio.h .
unde: calea - este un pointer spre un ir de caractere care conine calea ctre ierul care se deschide mod - este un pointer spre un ir de caractere care denete modul de prelucrare. Modul de prelucrare:
"r" - deschidere pentru citire (read) "w" - deschidere pentru scriere (write) "a" - deschidere pentru adugare (append) "r+" - deschidere pentru modicare (citire/scriere)
"rb" - deschidere pentru citire binar "wb" - deschidere pentru scriere binar "r+b" - deschidere pentru citire/scriere binar
Pentru a nchide toate ierele deschise la un moment dat se poate utiliza funcia
int fcloseall();
Exemplu :
#include <stdio.h> void main() { FILE *fisier; char*nume; gets(nume); if(!(fisier=fopen(nume,"r"))) printf("eroare la deschidere"'); /*diverse instruciuni */ fclose(fisier);
}
5. Funcia int fprintf(FILE*fisier, const char*format,...) - scriere cu format n ierul fisier. 6. Funcia int fscanf(FILE*fisier, const char*format,...) - citire cu format din ierul fisier . 7. Funcia size_t fread(void*p,int nb,int lb,FILE* fisier) - citire a nb blocuri de lungime lb din ierul fisier , care se depun la dresa de memorie p. Se returneaz numrul de blocuri citite din ier 8. Funcia size_t fwrite(void*p,int nb,int lb,FILE* fisier) - scriere a nb blocuri de lungime lb n ierul fisier , de la dresa de memorie p. Se returneaz numrul de blocuri scrise din ier Vericarea dac s-a ajuns la sfrit de ier: int feof(FILE *fisier); Salt n ier: int fseek(FILE *fis,long n,int poz); unde poz poate :
SEEK_SET sau 0 - de la nceputul ierului SEEK_CUR sau 1 - de la poziia curent SEEK_END sau 2 - de la sfritul ierului.
modul urmtor: pe prima line se specic numrul de linii i de coloane, iar pe ecare linie succesiv se a valorile (ntregi) din linia corespunztoare n matrice. S se citeasc elementele din ier ntr-o matrice A.
#include <stdio.h> #include <malloc.h> void main() { FILE *fisier; char nume[255]; int m,n, **A,i,j; gets(nume); if(!(fisier=fopen(nume,"r"))) printf("eroare la deschidere"); else { fscanf(fisier,"%d %d",&m,&n); A=(int**)malloc(m*sizeof(int*)); for(i=0;i<m;i++) { A[i]=(int*)malloc(n*sizeof(int)); for(j=0;j<n;j++) fscanf(fisier,"%d",&A[i][j]); } fclose(fisier);
}