Scanf没有读取双倍

时间:2015-10-21 21:07:36

标签: c floating-point double scanf

我正在尝试使用double从用户那里继续阅读scanf值。

代码:

printf("Enter A value: \n");
double input;
int result = scanf("%f", &input);
printf("INPUT: %f\n", input);

输出

INPUT: 0.000

2 个答案:

答案 0 :(得分:6)

你骗了编译器:扫描时,%f表示你提供了指向float的指针。但是你提供了一个指向double的指针。

要解决此问题,请使用%lf input声明为float

请注意,printf格式存在不对称,%ffloat参数使用double。这是有效的,因为printf参数被提升为double(并且不是指针)。

答案 1 :(得分:2)

  

我正在尝试使用scanf从用户那里读取双倍值连续

为此,您需要一个循环,如下所示:

while(scanf("%lf", &input) == 1) {
    //code goes here...
    printf("INPUT: %lf\n", input);
    //code goes here...
}

请注意,由于input的基本类型为double,您需要使用%lf代替%f%f用于{{1} }})。