Sunteți pe pagina 1din 5

La fisiere text de stiut:

Citirea dintr-un fisier text: fscanf(f,%d,&x); de exp citesc nr intreg x din fisierul f
Afisarea : fprintf(f,%d,x);
Rewind(f); - revenire la inceputul fisierului
Echivalent cu: fclose(f); si apoi f=fopen(fisier.txt,r);
Fclose(f); - inchiderea fisierului
rename(nume vechi,nume nou); - redenumire fisier
remove(cale fisier); - stergere fisier

i. Sa se scrie un program care copiaza intrarea standard la iesirea standard, pna la apasarea combinatiei
CTRL-Z.
#include<stdio.h>
#include<conio.h>
void main()
{ int c;
while((c=getch())!=EOF)
putch(c);}

ii. Sa se scrie un program care listeaza la imprimanta conectata la portul paralel continutul fisierului text
al carui nume este preluat ca parametru n linia de comanda; daca n linia de comanda nu se transmite
nici un parametru, se considera fisierul standard de intrare.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main(int argc,char *argv[])
{ FILE *f;
int c,er;
er=1;
if(argc==1)
{er=0;f=stdin;}
else if(argc==2)
if((f=fopen(argv[1],"r"))==0)
printf("\nFisierul specificat nu poate fi deschis. (%s)",
argv[1]);
Stiinta nvatarii unui limbaj de programare. Aplicatii
else er=0;
else printf("\nNumar gresit de parametri in linia de comanda.");
if(!er)
{while((c=getc(f))!=EOF)
putc(c,stdprn);
fclose(f);}
}

iii. Sa se scrie programul care creeaza un fisier text n care memoreaza doua matrice, astfel: pe prima
linie numarul de linii si numarul de coloane ale primei matrice, separate printr-un spatiu; pe fiecare din
liniile urmatoare, n ordine, elementele unei linii din matrice, separate prin cte un spatiu; n continuare
a doua matrice, n aceeasi forma.
#include<stdio.h>
void main()
{FILE *f;
int m,n,i,j;
float x;
char s[20];
printf("Nume fisier: ");gets(s);
f=fopen(s,"w");
printf("nr. linii a: ");scanf("%d",&m);
printf("nr. col a: ");scanf("%d",&n);
fprintf(f,"%d %d\n",m,n);
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
{printf("a(%d,%d)=",i,j);
scanf("%f",&x);
fprintf(f,"%5.2f ",x);}
fprintf(f,"\n");}
printf("nr. linii b: ");scanf("%d",&m);
printf("nr. col b: ");scanf("%d",&n);
fprintf(f,"%d %d\n",m,n);
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
{printf("b(%d,%d)=",i,j);
scanf("%f",&x);
fprintf(f,"%5.2f ",x);}
fprintf(f,"\n");}
fclose(f);}

iv. Sa se scrie programul care nmulteste matricele aflate n fisierul creat la problema anterioara, daca e
posibil. Rezultatul se va memora n acelasi fisier, n continuare, n aceeasi forma. Daca nmultirea nu e
posibila, se va scrie ca rezultat un mesaj de eroare. Matricele snt suficient de mici pentru a putea fi
ncarcate n memorie.

#include<stdio.h>
void main()
{FILE *f;
int m,n,p,q,i,j,k;
Lucrul cu fisiere
float x,a[20][20],b[20][20];
char s[20];

printf("Nume fisier: ");gets(s);


if(!(f=fopen(s,"r"))) printf("\nFisierul nu poate fi deschis.");
else{fscanf(f,"%d %d",&m,&n);
for(i=0;i<m;i++) //citesc in memoria principala prima matrice :a
for(j=0;j<n;j++)
fscanf(f,"%f",&a[i][j]);
fscanf(f,"%d %d",&p,&q);
for(i=0;i<p;i++) //citesc in memoria principala a doua matrice: b
for(j=0;j<q;j++)
fscanf(f,"%f",&b[i][j]);
if(n!=p) printf("\nNu se pot inmulti."); //daca nr de coloane ale primei matrice nu este egal cu nr de linii
ale celei de-a doua matrice, atunci ele nu se pot inmulti
else{f=fopen(s,"a");
fprintf(f,"%d %d\n", m,p);
for(i=0;i<m;i++) //LINIE
{for(j=0;j<q;j++) //COLOANA
{x=0;
for(k=0;k<n;k++) //ELEMENT COMUN
x+=a[i][k]*b[k][j];
fprintf(f,"%5.2f ",x);}
fprintf(f,"\n");}
}
fclose(f);}
}

v. Sa se scrie programul care afiseaza pe ecran rezultatul de la problema anterioara.

#include<stdio.h>
#define MANY 1000 //definesc o constanta
void main()
{FILE *f;
int m,n,i,j;
float x;
char s[20];
printf("Nume fisier: ");gets(s);
if(!(f=fopen(s,"r"))) printf("\nFisierul nu poate fi deschis.");
else{fscanf(f,"%d %d",&m,&n);
fgets(s,MANY,f); //citesc 1000 de caractere
for(i=0;i<m;i++)
fgets(s,MANY,f);
fscanf(f,"%d %d",&m,&n);
fgets(s,MANY,f);
for(i=0;i<m;i++)
fgets(s,MANY,f);
fscanf(f,"%d %d",&m,&n);
for(i=0;i<m;i++)

{for(j=0;j<n;j++)
{fscanf(f,"%f",&x);
printf("\t%5.2f",x);}
printf("\n");}
fclose(f);}
}

vi. Sa se scrie programul care memoreaza ntr-un fisier text date despre studentii unei facultati. Pe
fiecare linie se memoreaza: numarul matricol, numele, prenumele, anul, grupa, cele 10 note obtinute la
examene. Datele snt separate prin cte un spatiu. Acolo unde nu se cunoaste nca nota se va introduce
valoarea 0.

#include<stdio.h>
void main()
{FILE *f;
char nume[30],s[20];
int nr,an,gr,n[10],i;
printf("Nume fisier: ");
gets(s);
f=fopen(s,"w");
printf("Nr. matricol: ");
scanf("%d",&nr);
while(!feof(stdin))
{fflush(stdin);
printf("Nume si prenume: ");gets(nume);
printf("An: ");scanf("%d",&an);
printf("Grupa: ");scanf("%d",&gr);
fprintf(f,"%4d %30s %2d %2d ",nr,nume,an,gr);
for(i=0;i<10;i++)
{printf("nota %d: ",i+1);
scanf("%d",&n[i]);
fprintf(f,"%2d ",n[i]);}
fprintf(f,"\n");
printf("Nr. matricol: ");
scanf("%d",nr);}
fclose(f);}

vii. Sa se scrie programul care calculeaza media studentilor integralisti si cea mai mare dintre mediile
studentilor integralisti din fisierul creat anterior.

#include<stdio.h>

void main()
{FILE *f;
char nume[30],s[200];
int nr,an,gr,n[10],i,e,p;
float m,max,m1;
printf("Nume fisier: ");
gets(s);
if(!(f=fopen(s,"r")))printf("Nu se poate deschide fisierul.");
else {p=0;max=0;m1=0;
fscanf(f,"%d",&nr);
while(!feof(f))
{fscanf(f,"%s %d %d",nume,&an,&gr);
e=1;m=0;
for(i=0;i<10;i++)
{fscanf(f,"%d",&n[i]);
if(n[i]<5)e=0;
m+=n[i];}
if(e){m/=10;
p++;
m1+=m;
if(m>max)max=m;}
fscanf(f,"%d",&nr);}
printf("\nmedia: %5.2f",m1/p);
printf("\nmedia maxima: %5.2f", max);}
fclose(f);}

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