Форум программистов, компьютерный форум CyberForum.ru

Как с scanf сделать "защиту от дурака"? - C++

Восстановить пароль Регистрация
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
26.09.2013, 12:50     Как с scanf сделать "защиту от дурака"? #1
Нужно, чтобы пользователь ввел две целочисленные переменные. Как делал я:
C++
1
2
3
4
5
6
7
8
bool ReadInteger(int &var)
{
if (scanf("%d", &var) != 1)
{
return false;
}
return true;
}
Всё бы ничего, но если пользователь вводит, например, дробное число "10.3", то в первую переменную записывается 10, а второй ввод даже не требуется, ведь в буфере уже есть "." для обработки и вывод в консоли выглядит примерно так:
"
Enter first integer:
10.3
Enter second integer:
ReadInteger returned false. Aborted.
"
А нужно, чтобы уже при первом варианте он выдал ошибку.
Считывать вход в строку и парсить её - не вариант. Как сказано в шапке темы - "как с scanf сделать"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
26.09.2013, 13:01     Как с scanf сделать "защиту от дурака"? #2
Цитата Сообщение от nexen Посмотреть сообщение
Считывать вход в строку и парсить её - не вариант.
почему не вариант? мне вот кажется что это как раз таки вариант. сначала записал в строку, потом проверил и если все хорошо, то присвоил это значение переменной var
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
26.09.2013, 13:13  [ТС]     Как с scanf сделать "защиту от дурака"? #3
_, не вариант потому, что задание такое
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,127
Записей в блоге: 26
26.09.2013, 14:36     Как с scanf сделать "защиту от дурака"? #4
Со scanf - никак
http://www.cyberforum.ru/blogs/42536/blog278.html
Yandex
Объявления
26.09.2013, 14:36     Как с scanf сделать "защиту от дурака"?
Ответ Создать тему
Опции темы

Текущее время: 12:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru