Scanf читает каждый двойной неправильно

У меня есть следующий код:

    int main(void)
{
    double r;
    scanf("lf",&r);
    printf("%lf\n",r);
}

Любое введенное мной значение возвращает бессмысленный номер с 40-50 цифрами. Scanf прекрасно работает с символами, целыми числами, строками и т. д., но с двойными я получаю эту проблему. Кто-нибудь может мне помочь?

6 ответов

Решение
scanf("lf",&r);

Должно быть

scanf("%lf",&r);

Вы пропускаете проценты (%) символ в строке формата, он должен быть:

scanf("%lf", &r);

и затем вы должны добавить проверку возвращаемого значения, поскольку, как вы только что узнали, ввод-вывод хрупок и может дать сбой. Таким образом, неправильно полагаться на r содержит правильное значение, если вы не проверили, что сканирование работает:

if(scanf("%lf", &r) == 1)
{
  print("got the double %g\n", r);
}
else
{
  printf("**Failed to read a double value!\n");
}

Тебе нужно %lf когда вы читаете это в.

Пытаться

scanf("%lf",&r);

Вы забыли положить в %,

Тебе нужно

scanf("%lf", &r);

Каждый раз, когда вы используете scanf(), вам нужно поставить знак процента перед тем типом переменной, который вы используете.

Ты забыл % до lf:

scanf("%lf", &yourDouble);
Другие вопросы по тегам