[C] Inserire un intero da tastiera con controllo su carattere

m45511
Salve, dovrei acquisire un intero da tastiera con un semplice
 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
apatriarca
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?

Summerwind78
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

vict85
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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.