Ciao forum
Se uso la scanf in questo modo
e inserisco come dato un numero con virgola (ad esempio 1,11) la scanf prende 1 come se fosse un dato corretto e non mi accorgo dell'errore...codice:stato=scanf("%d", &dato);
Come posso risolvere?
Ciao forum
Se uso la scanf in questo modo
e inserisco come dato un numero con virgola (ad esempio 1,11) la scanf prende 1 come se fosse un dato corretto e non mi accorgo dell'errore...codice:stato=scanf("%d", &dato);
Come posso risolvere?
1) La variabile dato deve essere di tipo float
2) All'interno della scanf, il carattere di controllo formato deve essere %f
3) L'input dei valori decimali viene fatto con il . e non con la ,
1) Io voglio prendere un int e non un float
2) Se voglio un intero uso %d
3) La funzione deve dare errore in caso di caratteri diversi da intero
Potresti leggerlo come stringa e veriicare che non ci siano caratteri diversi dalle cifre. Poi lo converti in intero con atoi.
Non lo hai mai detto. Sembrava che l'errore fosse il fatto che non ottenessi i decimali che ti erano necessari.Originariamente inviato da spiderontheweb
1) Io voglio prendere un int e non un float
Basta dirlo ...2) Se voglio un intero uso %d
E dirlo prima? Non so se hai riletto il tuo primo post ...3) La funzione deve dare errore in caso di caratteri diversi da intero
A questo punto, il problema cambia ...
Puoi risolvere, come ti e' stato detto, acquisendo una stringa e testandone il contenuto.
Oppure acquisendo un dato in floating point confrontandolo con la sua parte intera.