Я пытаюсь постоянно считывать значение double от пользователя, используя scanf.

Код:

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

На выходе

INPUT: 0.000
2
code 22 Окт 2015 в 00:07

2 ответа

Лучший ответ

Вы солгали компилятору: при сканировании %f сообщает, что вы указываете указатель на float. Но вы указали указатель на double.

Чтобы исправить это, либо используйте %lf , либо объявите input как float.

Обратите внимание, что существует асимметрия с форматами printf, которые используют %f как для аргументов float, так и double. Это работает, потому что аргументы printf повышаются до double (и не являются указателями).

7
Jens 21 Окт 2015 в 21:12

Я пытаюсь получить двойное значение постоянно от пользователя, использующего scanf.

Для этого вам понадобится цикл, например следующий:

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

Обратите внимание: поскольку примитивным типом input является double, вам нужно использовать %lf вместо %f (%f используется для float) .

2
rakeb.mazharul 21 Окт 2015 в 21:43