2010-04-25 69 views
9

這是一個簡單的問題,但我不能看到它:sscanf的雙打

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

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

爲什麼d不包含雙值8.649292

回答

16

哦,等等,沒關係。 d需要是float

,並使其工作,你可以使用%lf爲雙

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

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

'%lf'需要掃描雙用'scanf',但它是不正確使用'和'printf'%lf' 。只需使用'%f'。 – 2010-08-06 17:19:07

+1

@R .. [你的評論說明](http://stackoverflow.com/questions/210590/why-does-scanf-need-lf-for-doubles-when-printf-is-okay-with-just- F) – bobobobo 2013-11-15 21:02:07