Nella procedura inseriscinota c'è una parentesi graffa di troppo: ecco il codice modificato
codice:
  
void inseriscinota(data dd)
{
    dd.giorno=LUNEDI;
    dd.mese=OTTOBRE;
    char a;
    int i;
    dd.nota=(char*)malloc(sizeof(char));
    for(i=1;i<1000;i++)
    {
        dd.nota=(char*)realloc(dd.nota,i*sizeof(char));
        if(a==0)
        { printf("Allocazione fallita"); i=999;}
        dd.nota[i-1]=getchar();
        if(dd.nota[i-1]==10) i=999;
        i++;
    }
}
Così ti dovrebbe essere più comprensibile


Ciao