2014-01-22 3 views
0

Im используя этот код, чтобы использовать для ввода числового значения переменной:Как проверить, если пользователь ввел вход или не

float day; 
printf("Day?: "); 
scanf("%f",&day); 

, как я могу сделать программу получения сообщения об ошибке, если пользователь не вводит ЛЮБОЕ значение для «Дня» ??

ответ

1

Попробуйте это:

if(scanf("%f",&day) != 1) 
    printf("Error"); 
+0

'scanf ("% f ", ...)' будет сканировать над ведущим белым пространством, например '' \ n'', на ''% f ''. 'scanf()' не вернется, пока не увидит хотя бы одно небелое пространство. (или EOF). – chux

0

Использование fgets()/sscanf()

char buf[100]; 
fgets(buf, sizeof(buf), stdin); 
if (sscanf(buf, "%f", &day) != 1) { 
    if (buf[0] == '\n') 
    HandleNothingInput(); 
    else 
    HandleBadInput(); 
    } 
} 

fgets() обычно читает до тех пор, Введите или '\n' вводится. Используя sscanf() разобрать буфер, пустые входы («пользователь не ввести любое значение»), плохой вход («ABC») легко обнаруживаются в результате scanf() будет 0.


Альтернативы: Если вы хотите, чтобы обеспечить дополнительные данные не введены, можно использовать часовому:

int ch;  
if (sscanf(buf, "%f %c", &day, &ch) != 1) { 

atof() другой подход.

Смежные вопросы