这是一个简单的问题,但我看不出来: char *s = "f 8.649292" ; double d ; sscanf( s, "f %f", &d ) ; printf( "d is %f\n", d ) ; 为什么d不包含双精度值8.649292?
等等,不好意思,d需要是一个float。 并且为了使其工作,你可以使用%lf来表示一个双精度浮点数。 char *s = "f 8.649292 " ; float d ; /* 将double改为float */ sscanf( s, "f %lf", &d ) ; /* 将%lf改为%f */ printf( "d is %f\n", d ) ; /* 将%lf改为%f */
scanf
扫描双精度浮点数需要使用%lf
,但在printf
中使用%lf
是不正确的。只需使用%f
即可。 - R.. GitHub STOP HELPING ICE