Buona domenica a tutti volevo chiarirmi un piccolo dubbio riguardante i menù.

In genere io il menù in un file c, per le conoscenze attuali, sono abituato a vederlo con un do{}while(), per essere più chiari :

codice:
int scl;
do{
    printf("\n1)Scelta x\n");
    printf("2)Scelta y\n");
    printf("3)Scelta z\n");
    printf("0)Esci");
    scanf("%d" ,&scl)
    if(scl < 0 || scl > 3)
        printf("Errore hai inserito un valore invalido");

    switch(scl)
    {
        case 1:
             break;
        case 2:
             break;
         case 3:
             break;
     }

}while( scl != 0);
oggi, ho visto questo tipo di codice:

codice:
main(){
      struct contatto dati[100];
      int numero_dati = 0;
      for (;;) {
          char scelta;
          printf("0- Fine\n");
          printf("1- Nuovo Inserimento\n");
          printf("2- Stampa\n");
          printf("3- Ordinamento\n");
          printf("4- Scrivi rubrica su file\n");
          printf("5- Leggi rubrica da file\n");
          printf("Scelta:");
          scanf("%c",&scelta);
          if (scelta == '0') 

          break;
          else if (scelta == '1') {
             struct contatto nuovo_dato;
             printf("--------------\n");
             printf("Cognome:");
             scanf("%s", nuovo_dato.cognome);
             printf("Nome:");
             scanf("%s", nuovo_dato.nome);
             printf("Anno di nascita:");
             scanf("%d", &nuovo_dato.anno_nascita);
             if (inserimento(dati,numero_dati,nuovo_dato) == 1)
                numero_dati++;
             else
                 printf("Inserimento non possibile, cognome gia' presente\n");
          }
          else if (scelta == '2') {
             stampa(dati, numero_dati);             break;

sono praticamente uguali o il secondo formato è più indicato del primo?