Следующие коды, кажется, дают непоследовательные ответы вместо ожидаемого результата, интересно, почему.scanf с форматированным поплавком
$ cat chk.c
#include <stdio.h>
int main()
{
float a;
scanf("%4.1f", &a);
printf("%4.1f\n", a);
return 0;
}
$ cc chk.c && ./a.out
12.1
0.0
$
Это не совсем правильно считывает ввод! Может ли кто-нибудь объяснить это поведение, пожалуйста? Я попробовал несколько версий GCC на Linux с тем же результатом, и сетевой поиск тоже не был полезен.
Прецизионность, не являющаяся частью спецификации формата scanf. –
Шаг 1: отбросьте '' \ n'' в 'scanf ("% 4f \ n ", &a);'. Это позаботится о первой проблеме. – chux