PDA

View Full Version : [C] utilizzo sscanf


Alex_G
30-06-2013, 16:22
Ciao a tutti, ho trovato questo esercizio, in cui viene letto un carattere dalla linea di comando e viene stabilito se si tratti di un numero reale o meno; la verifica della condizione è la parte che ho evidenziato... ma in che modo viene stabilito?? Grazie in anticipo :)

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
double a;

if(argc != 2)
{
fprintf (stderr,"errore: inserire un parametro\n");
exit (1);
}

if (sscanf(argv[1],"%lf",&a) != 1)
{
printf ("Il parametro fornito (%s) non e' un numero reale\n", argv[1]);
}
else
{
printf ("Il parametro fornito (%lf) e' un numero reale\n", a);
}

return 0;

lorenzo001
30-06-2013, 18:47
Lo stabilisce perché la sscanf restituisce il numero di campi correttamente acquisiti (in questo caso 1, dato che c'è un solo campo).

Il codice si "fida" della sscanf che esegue il parsing del valore in input.

Ovviamente, ad esempio, anche un valore come 5 è un valore valido ...

Alex_G
01-07-2013, 17:04
essenzialmente questo esercizio è sbagliato perchè piuttosto che eseguire le operazioni più logiche e semplici si è preferito sfruttare un side effect, sbagliando..

Quale sarebbe stata un'operazione più logica ? xD

Alex_G
01-07-2013, 17:05
Avrei potuto utilizzare per esempio isdigit ??? copiare il carattere in una stringa e successivamente valutarlo ? sarebbe stato corretto?