Salve, sto creando un programma che verifica se il tasto digitato sia un numero.
Allo scanf("%d", &x); io voglio che l'utente digiti un numero intero da 1 a 100.
Ora, mi sono chiesto cosa sarebbe accaduto se l'utente invece di digitare il numero 56, avrebbe digitato caratteri a caso per creare caos nel codice, ad esempio 'ciao' o 'ciao22' o '22ciao'..
Dato che lo scanf preleva l'intero, ho notato che nel mio programma, se inserisco un numero tra 1 e 100 continua normalmente, se inserisco delle lettere e numeri, mi crea una specie di buffer ovvero memorizza i caratteri e ogni volta allo scanf li rialloca e li ripete (o almeno io penso).
L'output che esce a schermo è un loop continuo senza fine del printf '# chiave numerica 'x':' e il printf dell'errore 'valore numerico errato'. Se invece digito nello scanf 'ciao200' mi da sempre il loop però col messaggio di errore 'massimo 100' ovvero quello di dove verifica se il numero è massimo 100.
Questo è il codice così capite meglio:
Punto del codice dove chiede il numero:
Funzione esterna 'isnumero' dove lo analizza:
I valori di ritorno:
return 0 interrompe il ciclo while e continua
return 1 esce dalla funzione isnumero e va allo scanf (quindi ripete il while)
return 2 errore, esce dal programma
Cosa posso fare?
Grazie a chi sa aiutarmi
Allo scanf("%d", &x); io voglio che l'utente digiti un numero intero da 1 a 100.
Ora, mi sono chiesto cosa sarebbe accaduto se l'utente invece di digitare il numero 56, avrebbe digitato caratteri a caso per creare caos nel codice, ad esempio 'ciao' o 'ciao22' o '22ciao'..
Dato che lo scanf preleva l'intero, ho notato che nel mio programma, se inserisco un numero tra 1 e 100 continua normalmente, se inserisco delle lettere e numeri, mi crea una specie di buffer ovvero memorizza i caratteri e ogni volta allo scanf li rialloca e li ripete (o almeno io penso).
L'output che esce a schermo è un loop continuo senza fine del printf '# chiave numerica 'x':' e il printf dell'errore 'valore numerico errato'. Se invece digito nello scanf 'ciao200' mi da sempre il loop però col messaggio di errore 'massimo 100' ovvero quello di dove verifica se il numero è massimo 100.
Questo è il codice così capite meglio:
Punto del codice dove chiede il numero:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Funzione esterna 'isnumero' dove lo analizza:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
I valori di ritorno:
return 0 interrompe il ciclo while e continua
return 1 esce dalla funzione isnumero e va allo scanf (quindi ripete il while)
return 2 errore, esce dal programma
Cosa posso fare?
Grazie a chi sa aiutarmi