sscanf用于双精度浮点数

15

这是一个简单的问题,但我看不出来:

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

为什么d不包含双精度值8.649292

1个回答

23

等等,不好意思,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 */

6
使用scanf扫描双精度浮点数需要使用%lf,但在printf中使用%lf是不正确的。只需使用%f即可。 - R.. GitHub STOP HELPING ICE
1
@R.. 你的评论解释 - bobobobo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接