Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / проверка числа на символ / 5 сообщений из 5, страница 1 из 1
03.10.2006, 22:26
    #34030139
Kronit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка числа на символ
Здравствуйте. У меня такой вопрос: пользователь вводит число и если оно не из нужного диапозона или не число, то необходимо сделать это заново.
вот как это смортится у меня:

while (1)
{
printf ("vvedite sist s4isl isto4nik:");
scanf ("%d", &s1);
if (s1>16 || s1<2) printf("Error! must 2-16 \n");
else break;
}

но тут у меня тока проверка на диапозон, а не на символы. Когда пользователь вводит символ, то получается зацикливание. Как мне сделать проверку? ведь вводимое число типа int, а не char. Если бы вводили символ, то моно проверить по диапозону аски таблицы, а как поступить с числовым вариантом???
Заранее спасибо.
...
Рейтинг: 0 / 0
04.10.2006, 01:26
    #34030271
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка числа на символ
imho плохо пользоваться scanf-ом.
надо всегда позволять пользователю вводить текстовые данные, а потом уже их проверять и преобразовывать.
...
Рейтинг: 0 / 0
04.10.2006, 01:43
    #34030277
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка числа на символ
Да нет, пользоваться scanf-ом вполне нормально. Только надо не забывать stdin сливать :)
Добавь непосредственно перед scanf'ом fflush(stdin); и все будет зашибись без всяких аски таблиц.
...
Рейтинг: 0 / 0
04.10.2006, 09:25
    #34030507
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка числа на символ
KronitЗдравствуйте. У меня такой вопрос: пользователь вводит число и если оно не из нужного диапозона или не число, то необходимо сделать это заново.
вот как это смортится у меня:

while (1)
{
printf ("vvedite sist s4isl isto4nik:");
scanf ("%d", &s1);
if (s1>16 || s1<2) printf("Error! must 2-16 \n");
else break;
}

но тут у меня тока проверка на диапозон, а не на символы. Когда пользователь вводит символ, то получается зацикливание. Как мне сделать проверку? ведь вводимое число типа int, а не char. Если бы вводили символ, то моно проверить по диапозону аски таблицы, а как поступить с числовым вариантом???
Заранее спасибо.

Почитайте про результат который возвращает scanf.
В Вашем случае если она вернет не 1, то строка ввода содержала
что то, что не может быть преобразовано в в тип который имеет Ваша переменная s1.
...
Рейтинг: 0 / 0
04.10.2006, 09:54
    #34030583
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка числа на символ
White OwlДа нет, пользоваться scanf-ом вполне нормально. Только надо не забывать stdin сливать :)
Добавь непосредственно перед scanf'ом fflush(stdin); и все будет зашибись без всяких аски таблиц.

Да, блин, хитрый подводный камень.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / проверка числа на символ / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]