Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Итераторы и итерация. Оператор >>. Простой текстовый редактор Страуструпа http://www.cyberforum.ru/cpp-beginners/thread962759.html
Добрый день! Есть код Страуструпа из Принципы и практика использования С++ Глава 20, параграф 6. Код описывает простой текстовой редактор. Строка символов заканчивающаяся '\n' хранятся в...
C++ Друзья, подскажите, можно ли дружественную функцию сделать виртуальной? Допустим есть какой-то базовый класс в котором объявлена дружественная функция, а определена она в глобальной области. Можно ли эту дружественную функцию сделать виртуальной, и скажем из производного... http://www.cyberforum.ru/cpp-beginners/thread962752.html
C++ Целочисленная арифметика
Нужно переставить старшую и младшую цифры в записи натурального числа. Не могу понять как это сделать
C++ Указатель и амперсанд
Всем здрасьте. У меня тут возник вопрос. Приведу простой примерчик двух функций(не смотрите на ошибки если есть , дело не в них) void Calculate(int*,int*); void main() { int one = 1; ...
C++ Преобразование кода для Visual C++ http://www.cyberforum.ru/cpp-beginners/thread962716.html
Дана задача:В текстовом файле хранится база отдела кадров предприятия. На предприятии 100 сотрудников. Каждая строка файла содержит запись об одном сотруднике. Формат записи: фамилия и инициалы (30...
C++ Проблеммка с конструктором копирования В общем суть: /*Создать класс - одномерный массив целых чисел (вектор). Функции-члены обращаются к отдельному элементу массива, вывода массива на экран, поэлементного сложения и вычитания со... подробнее

Показать сообщение отдельно
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335

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

26.09.2013, 12:50. Просмотров 546. Ответов 3
Метки (Все метки)

Нужно, чтобы пользователь ввел две целочисленные переменные. Как делал я:
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 сделать"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.