Ciao a tutti, sto avendo un problema che non capisco molto bene...

Io ho una struttura definita così:

codice:
typedef struct _esame
{
    char nome[20];
    int voto;
    int crediti;
} Esame;
Il programma le fa inserire all'utente e le salva su un file, che poi visualizza, con le due funzioni:

codice:
void aggiungi(FILE* fp)
{
    fseek(fp, 0, SEEK_END);
    Esame tmp = leggi_esame();

    fwrite(&tmp, sizeof(Esame), 1, fp);
}

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");
}
Eppure, per motivi a me del tutto sconosciuti, stampa sempre e solo il PRIMO record del file.
Se io ne aggiungo altri, questi vengono effettivamente salvati sul file (le dimensioni del file aumentano ogni volta di 28 byte, ovvero la dimensione della struttura), e infatti se apro la struttura con notepad riesco a vedere che sono stati aggiunti anche gli altri...

Come mai?