2010-04-25 16 views
9

Este es un problema sencillo, pero no puedo verlo:sscanf en dobles

 
    char *s = "f 8.649292" ; 
    double d ; 
    sscanf(s, "f %f", &d) ; 

    printf("d is %f\n", d) ; 

¿Por qué se d que no contiene el valor doble 8.649292?

Respuesta

16

Oh, espera, no importa. d necesita ser un float.

Y para que funcione se puede utilizar para un doble %lf

 
    char *s = "f 8.649292 " ; 
    double d ; 
    sscanf(s, "f %lf", &d) ; 

    printf("d is %lf\n", d) ; 
+3

'% lf' que se necesita para la digitalización de una doble con' scanf', pero es incorrecto utilizar '% lf' con' printf' . Simplemente use '% f'. –

+1

@R .. [Explicación de su comentario] (http://stackoverflow.com/questions/210590/why-does-scanf-need-lf-for-doubles-when-printf-is-okay-with-just- F) – bobobobo