Я пытаюсь читать в double
значение от пользователя с помощью scanf
.Scanf не читается в double
Код:
printf("Enter A value: \n");
double input;
int result = scanf("%f", &input);
printf("INPUT: %f\n", input);
Выход
INPUT: 0.000
Я пытаюсь читать в double
значение от пользователя с помощью scanf
.Scanf не читается в double
Код:
printf("Enter A value: \n");
double input;
int result = scanf("%f", &input);
printf("INPUT: %f\n", input);
Выход
INPUT: 0.000
Вы солгали компилятором: при сканировании, %f
говорит, что вы поставить указатель на float
. Но вы указали указатель на double
.
Чтобы исправить, либо использовать %lf
или объявить input
, как float
.
Обратите внимание, что существует асимметрия с printf
форматов, который использует %f
для обоих float
и double
аргументов. Это работает, потому что аргументы printf
рекламируются до double
(и не являются указателями).
Я пытаюсь читать в двойном значении непрерывно от пользователя с помощью scanf.
Для этого вам нужен цикл, как следующее:
while(scanf("%lf", &input) == 1) {
//code goes here...
printf("INPUT: %lf\n", input);
//code goes here...
}
Обратите внимание, что, как примитивный тип input
является double
, вам нужно использовать %lf
вместо %f
(%f
используется для float
).
Должно ли это быть '! = EOF' или' == 1'? –
@FiddlingBits, вы правы, ответьте на обновления. [scanf возвращает значение макроса EOF, если входной сбой происходит до любого преобразования. В противном случае scanf возвращает количество назначенных элементов ввода, которое может быть меньше, чем предусмотрено, или даже равно нулю, в случае раннего совпадения сбоев.] (Http://www.rowleydownload.co.uk/arm/documentation/ ? index.htm HTTP: //www.rowleydownload.co.uk/arm/documentation/scanf.htm) –
Почему результат int, а не double? – Michi
@ user3121023 Мне было любопытно узнать о намерении ОП, сделав это. :) – Michi