Documente Academic
Documente Profesional
Documente Cultură
Facultate
Lucrare de laborator
la disciplina : Structuri de date și algoritmi
Tema : Fișiere . Lucru cu fișiere.
A elaborat
A verificat
Scopul lucrării
Sarcina lucrării
- creare fișier
- afișarea din fișier a datelor
- adăugarea
- afișarea selectivă ( după un criteriu)
- corectarea
- ieșire.
Codul sursă
#include<stdio.h>
#include<stdlib.h>
FILE *f;
char editura[15];
struct biblioteca {
char nume_autor[25];
char denumire_carte[40];
int nr_pagini;
long anul_editie;
} lista1,lista2;
int i,n;
int creare(void)
scanf("%d",&n);
scanf("%s",editura);
f=fopen("biblioteca.inf","w");
for(i=0;i<n;i++)
scanf("%15s",lista1.nume_autor);
fflush(stdin);
scanf("%15s",lista1.denumire_carte);
fflush(stdin);
scanf("%d",&lista1.nr_pagini);
fflush(stdin);
scanf("%d",&lista1.anul_editie);
lista1.taxa=lista1.timp_imprumut*0.2;
fwrite(&lista1,sizeof(lista1),1,f);
fclose(f);
return 0;
// ########################################
// ########################################
int corectare()
int nn;
int k;
int i=0;
char edit[30];
l1:
scanf("%s",edit);
scanf("%s",edit);
fflush(stdin);
scanf("%d",&k);
//scanf("%d",nr_pagini);
f=fopen("biblioteca.inf","r+");
while(i<k)
scanf("%d",&nn); fflush(stdin);
fread(&lista2,sizeof(lista2),1,f);
scanf("%d",&lista2.timp_imprumut);
lista2.taxa=lista2.timp_imprumut*0.2;
fseek(f,(nn-1)*sizeof(lista2),SEEK_SET);
fwrite(&lista2,sizeof(lista2),1,f);
i++;
fclose(f);
return 0;
int afisare(void)
char edit[30];
l1:
scanf("%s",edit);
scanf("%s",edit);
f=fopen("biblioteca.inf","r");
printf("=====================================================================
================================================\n");
printf("=====================================================================
================================================\n");
i=1;
fread(&lista2,sizeof(lista2),1,f);
while (!feof(f) )
printf("|%4d |%-15s | %s | %d | %d
| %d | %0.2f\n",
i++,
lista2.nume_autor,
lista2.denumire_carte,
lista2.nr_pagini,
lista2.anul_editie,
lista2.timp_imprumut,
lista2.timp_imprumut*0.2);
fread(&lista2,sizeof(lista2),1,f);
printf("=====================================================================
================================================\n");
printf("\n");
fclose(f);
return 0;
// ########################################
// ########################################
int afis_select()
float min;
char edit[30];
l1:
scanf("%s",edit);
scanf("%s",edit);
scanf("%f",&min);
f=fopen("biblioteca.inf","r");
printf("=====================================================================
================================================\n");
printf("=====================================================================
================================================\n");
i=1;
fread(&lista2,sizeof(lista2),1,f);
while (!feof(f) )
if (lista2.taxa>min)
printf("|%4d |%-15s | %s | %d | %d
| %d | %0.2f\n",
i++,
lista2.nume_autor,
lista2.denumire_carte,
lista2.nr_pagini,
lista2.anul_editie,
lista2.timp_imprumut,
lista2.timp_imprumut*0.2);
fread(&lista2,sizeof(lista2),1,f);
printf("=====================================================================
================================================\n");
fread(&lista2,sizeof(lista2),1,f);
printf("\n");
fclose(f);
return 0;
// ########################################
// ########################################
int adaugare(void)
scanf("%d",&n);
scanf("%s",editura);
//scanf("%f",&nr_pagini);
f=fopen("biblioteca.inf","a");
for(i=0;i<n;i++)
scanf("%15s",lista1.nume_autor);
fflush(stdin);
scanf("%15s",lista1.denumire_carte);
fflush(stdin);
scanf("%d",&lista1.nr_pagini);
fflush(stdin);
scanf("%d",&lista1.anul_editie);
scanf("%d",&lista1.timp_imprumut);
lista1.taxa=lista1.timp_imprumut*0.2;
fwrite(&lista1,sizeof(lista1),1,f);
}
fclose(f);
return 0;
// ########################################
// ########################################
int main(void)
int optie;
while (1)
printf("\n\n M E N I U\n");
scanf("%d",&optie); fflush(stdin);
switch (optie)
case 6: exit(1);
} }
return 0;
}
Testarea programului.
2. Afișarea conținutului
3. Corectarea fișierului :
4. Afișarea selectivă