最近在用 sscanf 读取一个浮点数,显示总是出错,后来发现是 double 和float 赋值的问题,现把过程粘出来,便与以后记忆;
代码如下:
//test
char tempppp[50] = {0};
strcpy(tempppp, "npt=11.0-34.23");
double a,b;
sscanf(tempppp, "npt=%f-%f", &a, &b);
printf("a= %f, b= %f \n", a, b);
打印出来的结果如下:
a= 1048576.000000, b= 13378822144.000000
很明显是错的。
后来查资料发现, 单精度和双精度是不能相互赋值的,正确的赋值方式是:
用 %lf 给 double 变量