E' possibile limitare, in un scanf() o in qualche altro modo, l'input da tastiera ai soli 10 tasti dei numeri + INVIO e DEL???
E' possibile limitare, in un scanf() o in qualche altro modo, l'input da tastiera ai soli 10 tasti dei numeri + INVIO e DEL???
In che senso limitare?
In teoria si possono filtrare eventuali caratteri digitati,oppure si può fare un ciclo che stampa messaggio d' errore e continua a chiedere l' input finchè non vengono digitati solo numeri.
Usando:
Se si digita un carattere te lo prende lo stesso,l' unica cosa che puoi fare è ignorare i caratteri o ripetere la scanf.codice:scanf("%d",&num);
Quello che hai detto te è proprio quello che ho chiesto io
per la scanf() ce la facevo.....
Guarda,ti faccio un esempio di una parte di programma che ho usato in un altro contesto:
La devi riadattare al tuo caso,in questo caso chiedo solo mesi quindi numeri da 1 a 12.codice:while(ctr<1||ctr>12) { if(flag) printf("Scelta non valida,inserire il mese (1/12):\n"); else printf("Inserisci mese:\n"); p=get_string(stdin,p); ctr=atoi(p); flag=VERO; }
La atoi ritorna 0 se non ci sono numeri,quindi devi includere il caso che si digiti 0.
Poi se vuoi ignorare i caratteri ci sono tanti modi,mi ricordo che avevo scritto un programma che a un certo punto prendeva solo i numeri,ad esempio 4grhrh5hhht te lo prendeva come 45.
ma il problema non è quello.....il problema sta nel fatto chè si è costretti ad usare il getch() in un ciclo, per prelevare i caratteri uno ad uno e controllarli e neanche questo è il problema. Il problema sorge quando l'utente vuole inserire INVIO o DEL, perchè devi cancellare il numero inserito prima (preso sempre col getch() nel ciclo precedente, se esiste), oltre che a produrre le conseguenze di INVIO e DEL......
Stai già affrontando lo stesso argomento in questa discussione.
Non aprire più thread sullo stesso argomento.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...