我正在尝试使用double
从用户那里继续阅读scanf
值。
代码:
printf("Enter A value: \n");
double input;
int result = scanf("%f", &input);
printf("INPUT: %f\n", input);
输出
INPUT: 0.000
答案 0 :(得分:6)
你骗了编译器:扫描时,%f
表示你提供了指向float
的指针。但是你提供了一个指向double
的指针。
要解决此问题,请使用%lf
或将input
声明为float
。
请注意,printf
格式存在不对称,%f
和float
参数使用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} }})。