Scanf читает каждый двойной неправильно
У меня есть следующий код:
int main(void)
{
double r;
scanf("lf",&r);
printf("%lf\n",r);
}
Любое введенное мной значение возвращает бессмысленный номер с 40-50 цифрами. Scanf прекрасно работает с символами, целыми числами, строками и т. д., но с двойными я получаю эту проблему. Кто-нибудь может мне помочь?
6 ответов
Решение
Вы пропускаете проценты (%
) символ в строке формата, он должен быть:
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");
}
Тебе нужно
scanf("%lf", &r);
Каждый раз, когда вы используете scanf(), вам нужно поставить знак процента перед тем типом переменной, который вы используете.