Поскольку %d
будет потреблять все десятичные цифры до первого не десятичного числа di git. Поэтому, если вы введете "50.5"
m
, будет иметь значение 50, а символы ".5"
останутся в буфере непрочитанными.
Существует много возможных решений. Вот один из них:
int m ;
double fm ;
if( scanf("%f%",&fm) != 1 ||
modf( fm, &m) != 0 )
{
printf("Error\n");
exit(1);
}