Eccolo:
codice:
#include <stdio.h>
#include <stdlib.h>
typedef struct _esame
{
char nome[20];
int voto;
int crediti;
} Esame;
Esame leggi_esame()
{
Esame result;
fflush(stdin);
printf("Nome: ");
gets(result.nome);
printf("Voto: ");
scanf("%d", &result.voto);
printf("Crediti: ");
scanf("%d", &result.crediti);
return result;
}
void stampa_esame(Esame ex)
{
printf("%-20s\t%d\t(%d crediti)\n", ex.nome, ex.voto, ex.crediti);
}
void visualizza(FILE* fp)
{
fseek(fp, 0, SEEK_SET);
Esame tmp;
printf("\nEsami:\n");
while (fread(&tmp, sizeof(Esame), 1, fp) == 1)
stampa_esame(tmp);
printf("\n");
}
void aggiungi(FILE* fp)
{
fseek(fp, 0, SEEK_END);
Esame tmp = leggi_esame();
fwrite(&tmp, sizeof(Esame), 1, fp);
}
int main()
{
FILE* fp = fopen("C:\\Users\\Michele\\Desktop\\libretto.dat", "r+");
if (fp == NULL)
fp = fopen("C:\\Users\\Michele\\Desktop\\libretto.dat", "w+");
int main_menu_opt = 0;
do
{
printf("1 - Visualizza.\n");
printf("2 - Aggiungi.\n");
printf("--> ");
scanf("%d", &main_menu_opt);
switch (main_menu_opt)
{
case 0: break;
case 1: visualizza(fp);
break;
case 2: aggiungi(fp);
break;
default: printf("Unknown command.\n");
break;
}
printf("\n");
} while (main_menu_opt);
return 0;
}