Documente Academic
Documente Profesional
Documente Cultură
Ceea ce a fost aceea va mai fi, ...:cci nu este nimic nou sub soare. Ecclesiastul 1,9
Completai tabelul
Ce cred c tiu Vreau s tiu Am nvat
Continuai enunul:
Pointerul este... o varibil care pstreaz adresa unui obiect din memoria calculatorului. Funcia reprezint... un asamblu independent de declaraii i instruciuni, destinate pentru rezolvarea unor anumite probleme concrete, care se ntlnesc n program de mai multe ori. Funciile de prelucrare a irurilor de caractere sunt... strcat(); strchr(); strcmp(); strcpy(); strlen(); strstr();
Fiier = colecie ordonat de articole (nregistrri) pstrate pe un suport extern de memorie i identificate printr-un nume. Fiierul standard de intrare cu date introduse de la tastatur. Fiierul standard de ieire -cu rezultate afiate pe terminalul standard de ieire. Fiierul standard de eroare - afiseaza mesajele de eroare.
Un flux text presupune transferul de caractere organizate n linii de caractere. Fluxul binar reprezint o succesiune de octei care nu suport nici o modificare n timpul transferului.
Prelucrarea fiierelor se face pe dou niveluri: nivelul inferior, care apeleaz direct la sistemul de operare. nivelul superior, care utilizeaz structuri speciale FILE Funciile de pe nivelul superior nu asigur o independen total fa de sistemul de operare. Funciile standard de intrare / ieire au prototipurile n fiierul antet <stdio.h>.
Fiierele sunt gestionate prin pointeri la structuri FILE, asociate fiierelor pe durata prelucrrii. Fiierele standard au pointerii predefinii: stdin,stdout, stderr, stdprn, stdaux. Declararea unui pointer la fiier : FILE *pf; Deschiderea unui fiier . asociaz unui nume de fiier un pointer la fiier . stabilete un mod de acces la fiier Pentru deschiderea unui fiier se folosete funcia FILE *fopen(char *nume_fisier, char *mod_acces);
Accesul la fiiere
Operaia de scriere
a unui caracter ntr-un fiier int putc(int ch, FILE *fp); int fputc(int ch, FILE *fp); a unui ir de caractere ntr-un fiier int fputs(const char *string, FILE *pf);
Operaia de citire
a unui caracter ntr-un fiier int fgetc(FILE *fp); int getc(FILE *fp); a unui ir de caractere ntr-un fiier char *fgets(char *string, int size_string, FILE *pf);
fiier (fread())
fread(&variabila, sizeof(tip_variabila),nr_rec,ptrfile); unde: - variabila poate fi o variabil de un tip standard al C sau o variabil de un tip structurat definit de utilizator. - tip_variabila este un tip standard de date (char, int, long, float, double i derivatele lor) al C sau un tip structurat definit de utilizator (structur, uniune, etc). - sizeof(tip_variabila) este lungimea, n bytes, a tipului variabilei. - nr_rec este numarul de articole de tipul tip_variabil care urmeaz sa fie citit din fiier. - ptrfile este poinerul la fiierul din care se va citi un bloc de lungime egala cu nr_rec*sizeof(tip_variabila).
Operaia de scriere a unui bloc de date ntr-un fiier (fwrite()) fwrite(&variabila, sizeof(tip_variabila),nr_rec,ptrfile); unde: - variabila poate fi o variabil de un tip standard al C sau o variabila de un tip structurat definit de utilizator. - tip_variabila este un tip standard de date (char, int, long, float, double i derivatele lor) al C sau un tip structurat definit de utilizator (structur, uniune, etc). - sizeof(tip_variabila) este lungimea, n bytes, a tipului variabilei. - nr_rec este numarul de articole de tipul tip_variabila care urmeaza sa fie scris n fiier. - ptrfile este poinerul la fiierul n care se va scrie un bloc de lungime egala cu nr_rec*sizeof(tip_variabila).
unde: - ptrfile este un pointer la fiierul n care se vor scrie date cu format, pointer returnat de functia fopen() n procesul de deschidere n scriere a fiierului specificat. - e1, e2, e3 ... constitue lista de argumente sau parametrii efectivi de apel ai funciei fprintf ale cror valori urmeaza sa fie scrise n fiierul specificat . - format este un ir de caractere inclus ntre ghilimele care conine descrierea formatului de ieire sau un pointer la un ir de caractere care conine descrierea formatului de iesire.
Exemplu: S se afieze 10 siruri de caractere introduse de la tastatur ntr-un fiier pe disc(fisout) care este redirecionarea fiierului standart de ieie(stdout) asociat ecranului. #include<stdio.h> #include<conio.h> #include<stdlib.h> void main() {char s[50]; int i; if((freopen("fisout","w",stdout))== NULL) { printf("eroare la deschiderea fisierului"); exit(1); } printf("operatia a reusit"); for(i=1;i<10;i++) { printf("\n introdu sirul nr.%d",i); gets(s); printf(s); } }
Exemplu: S se afieze pe ecran, caracter cu caracter, coninutul unui fiier de tip text aflat pe disc n directoriul curent.
#include<stdio.h> #include<conio.h> #include<stdlib.h> void main() {FILE *f; char c; if((f=fopen("fisier2.txt","r"))== NULL) { printf("eroare la deschiderea fisierului"); exit(1); } c=fgetc(f); while(c!=EOF){ putchar(c); c=fgetc(f);} fclose(f); }
Exemplu: Se consider fiierul unu.txt care conine pe o singur linie i separate prin spaii 10 numere ntregi.S se afieze pe ecran suma acestor numere.
#include<stdio.h> #include<conio.h> #include<stdlib.h> void main() {FILE *f; int x; long s=0; if((f=fopen("unu.txt","r"))== NULL) { printf("eroare la deschiderea fisierului"); exit(1); } int i; for(i=1;i<=10;i++){ fscanf(f,"%d",&x); s=s+x; } fclose(f); printf(" %d",s); }
Fiiere i structuri
Pentru a nscri o variabil de tip structur n fiier este folosit funcia fwrite() fwrite(&struct_var,struct_size,n,fp); &struct_var numele variabilei de tip structur cu operatorul de adres, care comunic compilatorului adresa celulei de start din memoria unde este amplasat structura; struct_size este mrimea structurii; n este un numr ntreg, care determin cantitatea de structuri ce vor fi nscrise dintr-o ncercare. fp este numele indicatorului la fiier.
Exemplu:
Este creat un masiv de structuri cu informaia despre un grup de studeni ce conine numele studentului, anulnaterii i balul mediu. Mai nti de toate masivul de structuri se completeaz cu informaie, apoi structurile, cte una cu ajutorul ciclului for i funciei fwrite() sunt nscrise n fiier. Numele fiierului este numit de utilizator i pstrat n variabila filename de tip ir de caractere.
#include<stdio.h> #include<conio.h> struct stud{ char nume[15]; int an; float med;}; void main() { struct stud x[10]; int i,n; FILE *f; char filename[12]; float m; printf("numarul de studenti\n"); scanf("%d",&n); for(i=0;i<n;i++){ printf("nume\n"); scanf("%s",&x[i].nume); printf("anul nasterii\n"); scanf("%d",&x[i].an);
printf("nota medie\n"); scanf("%f",&m); x[i].med=m;} printf("numele fisierului\n"); scanf("%s",filename); f=fopen(filename,"w"); for(i=0;i<n;i++) fwrite(&x[i],sizeof(x[i]),1,f); fclose(f); getch();}
#include<stdio.h> #include<conio.h> struct stud{ char nume[15];int an; float med;}; main(){ struct stud y[10]; FILE *k; char fn[12]; int i=0; printf("numele fisierului"); scanf("%s",fn); k=fopen(fn,"r"); printf("informatia citita din fisier"); while(fread(&y[i],sizeof(y[i]),1,k)==1){ printf("Numele studentului:%s\n",y[i].nume); printf("anul nasterii:%d\n",y[i].an); printf("Media:%.2f\n",y[i].med); i++;} fclose(k);getch();}