2013-06-24 2 views
1
int a; 
scanf("%d",&a); 

Как я могу обеспечить, чтобы код не работал, если вводится символ без цифр в качестве ввода в оператор scanf()? [Мне нужно решение, которое не заставит меня изменить тип данных char]Подтверждение ввода целочисленного значения

+1

Читая документацию для зсапЕ и использования возвращаемого значения. Просто! – enhzflep

+0

Спасибо! Возвращаемое значение выполнило задание. – amulous

ответ

2

Если первый символ не цифра, то %d будет не соответствовать, и a не будет назначен. Возвращаемое значение scanf сообщает вам, сколько позиций было назначено. Если это одно, то, очевидно, это было хотя бы частично действительное число. Если он равен нулю, это означает, что он не может быть проанализирован как число, и вы можете сообщить об ошибке.

+0

Спасибо! Наконец понял это. – amulous

2

Код возврата scanf скажет вам, сколько предметов в списке ваших артов было заполнено. Это может все еще быть не таким, каким вы хотите: я думаю, вы обнаружите, что вход «123four» по-прежнему будет возвращаться 1, с a = 123.

0

Вы можете использовать делать во время цикла для проверки ввода от пользователя как:

int read,a; 
do { 
     read = scanf("%c", &a); 
    }while(read != EOF && a != '\n'); //change validation here according to condition