prima di tutto grazie per la risposta.poi...ho scritto come hai detto tu...funziona sempre tutto bene tranne che per il 29 febbraio degli anni bisestili...non so proprio + dove guardare...

codice:
#include <stdio.h>

int main()
{
    int gg, mm, aaaa;
    char *mese[] = {"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"};
    int bis=((aaaa % 4 == 0 && aaaa % 100 != 0) || aaaa % 400 == 0);

    printf("Inserire una data: ");
    scanf("%d/%d/%d", &gg, &mm, &aaaa);    
                                  
    
    while(1){ 
             if(((mm==2) && (gg>28)) || (((mm==4)||(mm==6)||(mm==9)||(mm==11)) && (gg>30)) || (((mm==1)||(mm==3)||(mm==5)||(mm==7)||(mm==8)||(mm==10)||(mm==12)) && (gg>31)) || ((mm==2 && gg==29) && (aaaa!=bis))){
                  printf("Data errata!!!\nInserire nuova data:");
                  scanf("%d/%d/%d", &gg, &mm, &aaaa);     
             
             }
             else{       
                  printf("%d %s %d", gg, mese[mm-1], aaaa);
                  break;                                  
             }                 
           
    }           
 return 0;


}