Ricordavo una funzione tipo "getnc()" o qualcosa del genere ma non trovo info a proposito, allora ho deciso di farmi una funzione che fa n volte getchar() ma mi da problemi dopo il primo "giro".
Allego il codice e vi spiego meglio:
- Codice: Seleziona tutto
if( strcmp( argv[1], "-i" ) == 0 )
{
/* Inserimento interattivo */
do
{
printf( "Cognome ? > " );
risultato = getnoillegal( cognome, 40 );
}
while( risultato == -1 );
/* TAGLIO ... */
int getnoillegal( char *stringa, int n )
{
int i;
char ch=0;
for( i=0 ; i<n ; i++ )
{
ch = getchar();
if( ch == EOF )
return -1;
if( ch == '\n' )
{
stringa[i] = '\0';
return 0;
}
/* Controllo caratteri illegali */
if( ch<48 || ch>122 )
return -1;
if( ch>= 58 && ch<=64 )
return -1;
if( ch>= 91 && ch<=96 )
return -1;
/* Aggiungo il carattere nella stringa */
stringa[i] = ch;
}
}
Il ciclo DO...WHILE funziona bene la prima volta ma se immetto caratteri illegali ristampa la scritta "Cognome ? >" ed esce dal ciclo.
Ho provato a debuggare e sembra che nel secondo ciclo getchar restituisca '\n' anche se non premo nessun tasto.
BOH!

Chi mi aiuta? GRASSIE!!