2010-04-25 24 views
9

Đây là một vấn đề đơn giản, nhưng tôi không thể nhìn thấy nó:sscanf cho đôi

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

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

Tại sao d không chứa giá trị đôi 8.649292?

Trả lời

16

Oh wait, nevermind. d cần phải là float.

Và để làm cho nó hoạt động bạn có thể sử dụng %lf cho một đôi

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

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

'% lf' là cần thiết cho việc quét một đôi với' scanf', nhưng đó là không chính xác để sử dụng '% lf' với' printf' . Chỉ cần sử dụng '% f'. –

+1

@R .. [Giải thích nhận xét của bạn] (http://stackoverflow.com/questions/210590/why-does-scanf-need-lf-for-doubles-when-printf-is-okay-with-just- f) – bobobobo

Các vấn đề liên quan