/*Lettura e Stampa di un array di Struct*/

#include <stdio.h>

struct studente {
	int esami;
	char matricola[10];
	float media;
	char cognome[50];
	char nome[50];
};

void leggi_studentev(struct studente v[], int *n);
void stampa_studentev(struct studente v[], int n);
void salva_file(char fname[], struct studente v[], int n);

int main(){
	
  struct studente v[100];
  int n;
  char filename[]="studenti.bin";
  //Realizzare qui la lettura da file
  //se file esiste
 
  leggi_studentev(v,&n);
  stampa_studentev(v,n);
  salva_file(filename, v, n);
  

}

void salva_file(char fname[], struct studente v[], int n)
{
	FILE * fp;
	fp=fopen(fname,"w");
	if(fp!=NULL)
	{
		fwrite(&n,sizeof(int),1,fp);
		fwrite(v,sizeof(struct studente),n,fp);
		}
	
	
	}
void leggi_studentev(struct studente v[], int *n)
{
	 printf("Numero studenti da inserire?:\n");
     scanf("%d",n);
     for(int i=0;i<*n;i++)
     {
		printf("inserisci matricola:\n");
	    scanf("%s",v[i].matricola);
	    printf("inserisci cognome:\n");
		scanf("%s",v[i].cognome);
		printf("inserisci nome:\n");
		scanf("%s",v[i].nome);
		printf("inserisci esami:\n");
		scanf("%d",&v[i].esami);
		printf("inserisci media:\n");
		scanf("%f",&v[i].media);
		 
		 }
     
	
	}
void stampa_studentev(struct studente v[],int n)
{
	
	for(int i=0;i<n;i++)
     {
	   printf("matricola:%s\n",v[i].matricola);
	   printf("cognome:%s\n",v[i].cognome);
	   printf("nome:%s\n",v[i].nome);	
	   printf("numero esami:%d\n",v[i].esami);
	   printf("media:%f\n",v[i].media);
   }	
}