Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Controllo dai in ingresso

    Ciao forum

    Se uso la scanf in questo modo
    codice:
    stato=scanf("%d", &dato);
    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...

    Come posso risolvere?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    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 ,

  3. #3
    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


  4. #4
    Potresti leggerlo come stringa e veriicare che non ci siano caratteri diversi dalle cifre. Poi lo converti in intero con atoi.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da spiderontheweb
    1) Io voglio prendere un int e non un float
    Non lo hai mai detto. Sembrava che l'errore fosse il fatto che non ottenessi i decimali che ti erano necessari.

    2) Se voglio un intero uso %d
    Basta dirlo ...

    3) La funzione deve dare errore in caso di caratteri diversi da intero
    E dirlo prima? Non so se hai riletto il tuo primo post ...

    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.

  6. #6
    Grazie!

    Mi sono spiegato male...


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.