2013-11-21 6 views
-1

Я хочу проверить, является ли значение, введенное пользователем, целым числом (Я имею в виду целое число, а не число как символ (например, char)).
Я использовал isdigit функция, и is... сестры, но не работает хорошо.проверить, является ли значение десятичным numbre (не числом как символ)

Например:

int digits = 220; // Or scanf("%d", digits); Or any way to take the input from user 
if(digits == `integer number`){ 
    // do things 
}else{ 
    // do things 
} 
+0

'Я использовал isdigit функцию, и ... сестры, но не работает good.'? – Sadique

+0

@Acme: Я использовал 'int isdigit (int c)', но не работает нормально. –

+1

, если вы выполняете 'scanf' с модификатором'% d', посылая ему указатель на 'int', вы не можете иметь ничего, что не является десятичным числом –

ответ

3
int digits = 220; // Or scanf("%d", &digits); 

Вот так. Вы сделали!

Или, вернее, если scanf("%d", &digits) возвращает 1, тогда целое число было успешно прочитано и сохранено в цифрах.

Обратите внимание, что объявление int digits гарантирует, что только целые значения могут быть сохранены в digits.

Итак:

int digits; 

if (scanf("%d", &digits) == 1) { 
    // Integer was read successfully from stdin and assigned to digits 
} else { 
    // Integer was not read. No value was assigned to digits 
} 
+1

не 'scanf' возвращает количество символов, которые читаются? В этом случае вам нужно проверить '! = 0' вместо' == 1' –

+0

@Klas Lindbäck: хорошо, вы правы. но это зависит от того, будем ли мы использовать 'scanf'. поэтому, если мы используем другой способ получения ввода от пользователя? –

+1

@ Lion King: неважно, как вы пишете переменную 'int', она всегда будет' int'. https://en.wikipedia.org/wiki/C_data_types – risingDarkness

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