Documente Academic
Documente Profesional
Documente Cultură
An Absențe (0-14)
Indicator de stare Nr. Nume şi
Grupa (1-
(0/1) matricol prenume 1 2 … 15
5)
C S C S C S
char int char[25] int char
char char char char char char
Scrieţi un program care înregistrează exmatricularea unui student. Studentul este identificat prin
numărul matricol.
Includeți în program un subprogram care generează, într-un fișier text, o listă cu toate datele din
fișierul binar. Lista trebuie să apară ca tabel, cu coloanele corect aliniate.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
typedef struct {
char curs;
char seminar;
}DISCIPLINA;
typedef struct {
char is;
int nrMatr;
char nume[25];
int grupa;
char an;
DISCIPLINA d[15];
}STUDENT;
//subprogramul raport
void raport(FILE* f) //paramentrul este fis binar
{
//declaram fis intern, numele fisierului de pe calculator si o variabila de tipul STUDENT
FILE* txt;
char numeRaport[20];
STUDENT s;
//orice raport are un nr crt
int nrcrt = 0;
int i;
printf("Numele raportului: ");
scanf("%s", numeRaport);
txt = fopen(numeRaport, "w");
if (!txt)
printf("Eroare!");
else
{
//trebuie sa ma asigur ca fis binar are toti studentii
//pozitionam pointerul la inceputul fisierului
fseek(f, 0, 0);
//pe prima linie imi apare capul de tabel
fprintf(txt, "Numar curent Numar Nume Grupa An Numar absente\n");
//parcurgem tot fisierul binar, citire, while, prelucrare, citire
fread(&s, sizeof(STUDENT), 1, f);
while (!feof(f))
{
//prelucrare
//in fis bin organizat relativ avem conditia is = 1
if (s.is == 1)
{
fprintf(txt, "%-12d %-5d %-25s %-5d %-2d ", ++nrcrt, s.nrMatr, s.nume,
s.grupa, s.an);
for (i = 0; i < 15; i++)
//2 descriptori de format pentru curs si seminar
fprintf(txt, "%-2d %-2d ", s.d[i].curs, s.d[i].seminar);
fprintf(txt,"\n");
}
fread(&s, sizeof(STUDENT), 1, f);
}
fclose(txt);
}
}
void main()
{
FILE* f;
char numeFisier[20];
STUDENT s;
int nrMatricol;
printf("Introduceti numele fisierului binar: ");
scanf("%s", numeFisier);
f = fopen(numeFisier, "rb+");
if (!f)
printf("Eroare");
else
{
//exmatriculam studentul
//cautam studentul
raport(f);
fclose(f);
}
}