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
?
Đâ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
?
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) ;
'% 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'. –
@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