В основном так:
if (fgets(buf, sizeof buf, stdin)) {
/* process valid input */
} else {
/* Ctrl+Z pressed */
}
Могут возникнуть сложности, если вы нажмете Ctrl + Z в середине строки, но начнете с основного.ОП был обновлен
У вас есть
scanf("%lf", &var);
scanf
возвращает количество выполненных им назначений.В вашем случае у вас есть только 1 переменная, поэтому scanf
возвращает 1 в обычном случае или 0 в случае сбоя.Просто проверьте возвращаемое значение
int n = scanf("%lf", &var);
/* test the return value of scanf: 1 all ok; 0 no conversions; EOF: error/failure */
if (n != 1)
{
break;
}
PS: Оу ... спецификатор "% lf" в scanf требует double
, var
в вашей программе - float
.Исправьте это тоже