[C] Inserire un intero da tastiera con controllo su carattere
Salve, dovrei acquisire un intero da tastiera con un semplice
In genere uso il
Che condizione devo impostare dentro il while per controllare se x è un carattere?
Potrei usare i codi ASCII ma farlo di tutto l'alfabeto mi sembra proibitivo.
Grazie per l'aiuto!
scanf("%d", &x)ma questa volta devo CONTROLLARE se viene inserito un carattere.
In genere uso il
do...while( ).
Che condizione devo impostare dentro il while per controllare se x è un carattere?
Potrei usare i codi ASCII ma farlo di tutto l'alfabeto mi sembra proibitivo.
Grazie per l'aiuto!
Risposte
Non ho capito che cosa vuoi fare.. Che significa che x deve essere un carattere? Tu stai chiedendo un valore intero. Sei forse interessato di usare qualcosa come %c?
Ciao
non è proibitivo il controllo usando la tabella ASCII
per controllare se il carattere inserito è numerico devi controllare che il suo valore ascii sia compreso tra 48 e 57
per controllare se il carattere inserito è carattere maiuscolo devi controllare che il suo valore ascii sia compreso tra 65 e 90
per controllare se il carattere inserito è carattere minuscolo devi controllare che il suo valore ascii sia compreso tra 97 e 122
alla fine sono 3 "if" oppure un "if" con 3 condizioni
Ciao
non è proibitivo il controllo usando la tabella ASCII
per controllare se il carattere inserito è numerico devi controllare che il suo valore ascii sia compreso tra 48 e 57
per controllare se il carattere inserito è carattere maiuscolo devi controllare che il suo valore ascii sia compreso tra 65 e 90
per controllare se il carattere inserito è carattere minuscolo devi controllare che il suo valore ascii sia compreso tra 97 e 122
alla fine sono 3 "if" oppure un "if" con 3 condizioni
Ciao
Per prima cosa sarebbe meglio non usare i codici ASCII direttamente: non hai alcuna certezza che il tuo sistema usi l'ASCII (anche se è piuttosto ragionevole crederlo).
Se vuoi fare quello che chiedi comunque NON puoi usare quello scanf: quello scanf ignora tutti i caratteri che vengono inseriti prima del numero che vuoi inserire.
Riguardo al vedere se è un carattere puoi usare isalpha http://en.cppreference.com/w/cpp/string/byte/isalpha contenuto in ctype o una funzione simile.
Per la lettura devi leggere la riga e poi convertire (se non vuoi farlo a mano esistono atoi e sscanf). Il metodo esatto dipende però un po' dal tuo problema.
Certo le cose cambiano se l'unica cosa che vuoi è effettivamente leggere un carattere, in quel caso puoi anche usare getchar o scanf con %c se proprio non lo conosci.
Se vuoi fare quello che chiedi comunque NON puoi usare quello scanf: quello scanf ignora tutti i caratteri che vengono inseriti prima del numero che vuoi inserire.
Riguardo al vedere se è un carattere puoi usare isalpha http://en.cppreference.com/w/cpp/string/byte/isalpha contenuto in ctype o una funzione simile.
Per la lettura devi leggere la riga e poi convertire (se non vuoi farlo a mano esistono atoi e sscanf). Il metodo esatto dipende però un po' dal tuo problema.
Certo le cose cambiano se l'unica cosa che vuoi è effettivamente leggere un carattere, in quel caso puoi anche usare getchar o scanf con %c se proprio non lo conosci.