Сообщение об ошибке: если число не целое, а число с плавающей точкой - PullRequest
0 голосов
/ 06 марта 2020

Почему ошибка не возникает, когда я ставлю число с плавающей точкой?

int m;
if(scanf("%d%",&m)!=1)
{
    printf("Error\n");
    exit(1);
}

1 Ответ

2 голосов
/ 06 марта 2020

Поскольку %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);
}
...