PDA

View Full Version : [C] a è un numero?


Vecchia Spugna
07-06-2005, 16:13
Ragazzi domandina semplice semplice... :D
esiste una funzione di libreria che mi controlla se in input ho messo un double?

grazie mille
ciau

illy
07-06-2005, 16:37
mmmmmmmmm ne dubito ma non potrei sempre sbagliare

Vecchia Spugna
07-06-2005, 16:42
mmmm :confused:
quando faccio la scanf del mio numero ("%d") se gli inserisco una lettera il programma mi termina.. non vorrei che il prof mi rompa per questo

RaouL_BennetH
07-06-2005, 16:44
mmmm :confused:
quando faccio la scanf del mio numero ("%d") se gli inserisco una lettera il programma mi termina.. non vorrei che il prof mi rompa per questo


per leggere un carattere (sorvolando su taaaaante cose) devi utilizzare "%s" o "%c" e senza anteporre l'operatore "&" anche se, suggerimento... in C/C++ i caratteri alla fine sono "numeri".

"%d" si aspetta di leggere un intero.

Vecchia Spugna
07-06-2005, 16:53
per leggere un carattere (sorvolando su taaaaante cose) devi utilizzare "%s" o "%c" e senza anteporre l'operatore "&" anche se, suggerimento... in C/C++ i caratteri alla fine sono "numeri".

"%d" si aspetta di leggere un intero.

è qui il punto.. se io non ci metto 1 altra cosa mi si schianta il programma :mad:

RaouL_BennetH
07-06-2005, 17:20
è qui il punto.. se io non ci metto 1 altra cosa mi si schianta il programma :mad:

Allora, fammi capire, il tuo programma cosa deve prendere in input, solo interi o qualsiasi cosa tu scriva?

lombardp
07-06-2005, 18:59
Ragazzi domandina semplice semplice... :D
esiste una funzione di libreria che mi controlla se in input ho messo un double?


Leggi l'input come stringa e fai la conversione da stringa a double (strtod). Se l'input non è un double, la funzione ritorna 0 (zero).

Ziosilvio
07-06-2005, 20:10
esiste una funzione di libreria che mi controlla se in input ho messo un double?
Ti basta controllare il valore di output di scanf.

Mi spiego: tu sai che gli argomenti di scanf sono una stringa e una lista di puntatori, e che la stringa deve contenere tanti specificatori di formato quanti sono i puntatori, i quali a loro volta devono fare riferimento a oggetti del tipo specificato dal formattatore corrispondente.
Quello che probabilmente non sai, e che purtroppo spesso non viene spiegato (chissà perché), è che scanf restituisce un valore di tipo int, corrispondente al numero di oggetti che è riuscita a leggere.
Quindi, puoi fare una cosa di questo tipo:
if (scanf("%lf",&x)!=1)
/* codice di gestione dell'errore */
Leggi la pagina di manuale di scanf (o il K&R) se vuoi saperne di più.