if ((n>4)&&(n<2))
{
printf("Al massimo 4 e minimo 2 giocatori\n");
InsGiocatori();
}
Ehm...io direi che quella chiamata ricorsiva è altamente fuori luogo, prima di tutto (parlo della chiamata a InsGiocatori())! Usa un ciclo infinito! Inoltre, in quello stesso if non ci va && ma ||. Scritto così quell'if è superfluo, perché sarà SEMPRE falso! Pensaci: un numero può essere CONTEMPORANEAMENTE (&&, and logico) minore di 2 e maggiore di 4?
Guarda:
codice:
char InsGiocatori()
{
int cont, n;
while( 1 ) // ciclo infinito
{
printf( "In quanti volete giocare? " );
scanf( "%d", &n );
if( ( n < 2 ) || ( n > 4 ) )
{
printf( "Al massimo 4 e minimo 2 giocatori\n" );
continue; // ripete la richiesta
}
for( cont = 0; cont < n; cont++ )
{
printf( "Inserire il nome del giocatore: " );
gets( v[ cont ].nome );
}
break;
}
}
In alternativa puoi usare anche un goto evitando il ciclo.
Ciao.