C - codice ascii per scrivere solo numeri

bibus12
Ho scritto questo semplice codice con l'intenzione di avere ok! Se ho immesso da tastiera un numero e no! Se invece digitò un qualsiasi altro carattere. Qualcuno potrebbe aiutarmi a correggerlo? Grazie mille in anticipo !




#include
int main (void) {

int a;
int count ;



do {
printf ("inserisci numero = " , a );
scanf ( "%d" , &a ) ;
count ++; // COUNT E' UN CONTATORE !!!!!!!!
char b=a;


{


if ( b > '48' && b < '57' )

printf("Ok \n");





else
printf ( " no ! \n ");

}




}
while ( count < 3 ); // in questo modo stabilisco che posso mettere qualsiasi numero intero MA CHE IL NUMERO MASSIMO DI ITERAZIONI
// E' 3!!!!!!! Se avessi messo come condizione del while (a<3) allora il numero massimo digitabile sarebbe stato due
// MA A DIFFERENZA DEL COUNT , il numero di iterazioni sarebbe stato infinito ! Si sarebbe fermato solo con "2"


return 0; }

Risposte
Lory314
Innanzi tutto sarebbe meglio se utilizzassi l'opportuno ambiente code per scrivere il codice. Visto così è poco leggibile.
Che problema riscontri nel codice?

vict85
La scrittura '48' non ha senso, e neanche '57'. Se vuoi confrontare con il codice allora devi scrivere 48 e 57... Oppure, un po' meglio, scrivere '0' e '9' mettendo però >= e <=.

Detto questo usare il codice ascii è un modo poco portabile per farlo, soprattutto se come fai tu introduci direttamente i codice invece di farne riferimento implicito. Il modo portabile e corretto per riconoscere se un carattere è una cifra è la funzione isdigit.
contenuta in ctype.h.

Per informazioni su questo aspetto puoi vedere su questa pagine wiki.
http://en.wikipedia.org/wiki/C_character_classification

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