Data di nascita

typedef struct{  int GIORNO,MESE,ANNO;
                   } DATA;
                
/*controllo uguaglianza*/
BOOL UgualeData(DATA d1, DATA d2)
{
   return (d1.GIORNO == d2.GIORNO) && 
          (d1.MESE == d2.MESE) && 
          (d1.ANNO == d2.ANNO); 
}

/*controllo precedenza
  ritorna vero sse d1 precede strettamente d2 */
BOOL Minore(DATA d1, DATA d2)
{
    if(d1.ANNO != d2.ANNO) return (d1.ANNO < d2.ANNO);
    else  if(d1.MESE != d2.MESE) return (d1.MESE < d2.MESE);
    else  if(d1.GIORNO != d2.GIORNO) return (d1.GIORNO < d2.GIORNO);
}

/*lettura data
  la parola letta dal file fin sarà ritornata dalla funzione
  si assume che la data sia scritta con il formato  gg/mm/aa   */

int LeggiDueC(FILE * fin)
{
   char c1,c2;
   
   c1 = fgetc(fin);
   c2 = fgetc(fin);
   return ((c1-'0') * 10) + (c2-'0');
}

DATA LeggiData(FILE * fin)
{
   DATA d;
   
   d.GIORNO = LeggiDueC(fin);
   fgetc(fin);
   d.MESE = LeggiDueC(fin);
   fgetc(fin);
   d.ANNO = LeggiDueC(fin);
   return d;
}

/*stampa data
  la data p sarà scritta sul file fout
  con il formato gg/mm/aa   */

void ScriviDueC(FILE * fout,int n)
{   
    fputc((n / 10)+'0',fout);
    fputc((n % 10)+'0',fout);
    }

void ScriviData(FILE * fout, DATA d)
{   
   ScriviDueC(fout,d.GIORNO);
   fputc('/',fout);
   ScriviDueC(fout,d.MESE);
   fputc('/',fout);
   ScriviDueC(fout,d.ANNO);
}