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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
#1

scanf проверка вводимого типа - C++

28.12.2013, 11:22. Просмотров 1285. Ответов 9
Метки нет (Все метки)

как узнать, что пользователь ввёл не число а строку, если от него требовалось первое и запрос проходил через функцию scanf?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2013, 11:22     scanf проверка вводимого типа
Посмотрите здесь:

Проверка типа вводимого с клавиатуры элемента - C++
Я создаю массив элементов типа double, ввод элементов с клавиатуры! Как мне проверить вводит ли пользователь именно числа, а не что то...

Проверка вводимого символа - C++
Привет.Помогите,надо сделать так ,чтобы в консольной программе при вводе цифр,вместо букв,выдавало ошибку

Проверка вводимого значения на соответствие индексу массива - C++
Доброго времени суток, подскажите как реализовать работу поиска индекса по введенному значению. Т.е. как найти нужный индекс по значению...

Реализовать проверку типа вводимого пользователем значения, которым будет инициализировано поле структуры - C++
Товарищи, поомогите пожалста. есть код, проблема в том что если в переменную code вводят НЕ число, программа зацикливается. вопрос -...

Проверка типа - C++
int n; std::cin >> n; Как проверить тип введённых данных? Ведь если введено не int, то программа будет работать не так, как мне...

Проверка типа (typeid) - C++
Подскажите пожалуйста как можно правильно реализовать такую вещь: если тип переменной и == int то.... нагуглил функцию:...

Проверка типа матрицы - C++
Как проверить, что матрица является верхнетреугольной. Не могу придумать алгоритм. Подскажите с чего начать? Добавлено через 32...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.12.2013, 12:25     scanf проверка вводимого типа #2
проверяй возвращаемое значение scanf
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
28.12.2013, 23:04  [ТС]     scanf проверка вводимого типа #3
Цитата Сообщение от Jupiter Посмотреть сообщение
проверяй возвращаемое значение scanf
не вариант , потому, что если происходит ошибка ввода, то ни какое значение переменной не присваивается, а следственно как мы будем сверять значение? ну допустим переменной можно присвоить экзотическое число -1234321 , навряд ли такое пользователь введёт, но всё таки это же не корректно.
нашёл такое решение, проверка флага в структуре FILE , stdin->_cnt > 1 если больше единицы, то была введена строка, если единица, то была введена цифра.
P.S. забыл сказать условие было такое, что программу нужно писать на СИ поэтому функции потоковых объектов ввода вывода не подходят
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.12.2013, 23:11     scanf проверка вводимого типа #4
Цитата Сообщение от Van111 Посмотреть сообщение
не вариант , потому, что если происходит ошибка ввода, то ни какое значение переменной не присваивается, а следственно как мы будем сверять значение?
сканф - функция, функции могут возвращать значения с помощью return. почитай доку что возвращает scanf
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.12.2013, 23:41     scanf проверка вводимого типа #5
C++
1
2
3
int a;
if (!scanf("%d", &a))
    printf("Error scanf!\n");
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.12.2013, 23:45     scanf проверка вводимого типа #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdio>
 
int main() {
    
    int i = 0;
    
    if( 1 != scanf( "%d", &i ) )
    {
        std::cout << "not a number" << std::endl;   
    }
    else
    {
        std::cout << "number: " << i << std::endl;  
    }
 
    return 0;
}
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
28.12.2013, 23:47     scanf проверка вводимого типа #7
Единственный надёжный способ - прочитать все данные в строковой буфер и потом его проанализровать
http://www.cyberforum.ru/blogs/42536/blog278.html

Добавлено через 1 минуту
Tulosba, пример работы твоей программы:

Код
$ ./a.exe
34872637475643756348753476598347
number: 2147483647
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.12.2013, 23:50     scanf проверка вводимого типа #8
Evg, переполнение это уже совсем другая история.
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
28.12.2013, 23:55     scanf проверка вводимого типа #9
Цитата Сообщение от Tulosba Посмотреть сообщение
Evg, переполнение это уже совсем другая история.
Просто я воспринимаю вопрос ТС'а как пожелание сделать программу с нормальным вводом. Хотя может он хотел узнать только то, о чём спросил
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2013, 12:19     scanf проверка вводимого типа
Еще ссылки по теме:

Проверка типа вводимых данных. - C++
Собственно,как осуществить ? К примеру,здесь: int main() { int x; int y; cin &gt;&gt; x;

Проверка типа вводимой переменной - C++
Сабж. Консольный режим. Возможно ли это вообще? Преобразование типов канечн рулезная вещь. Вот в таком кусочке: cout &lt;&lt;...

Проверка типа данных при вводе - C++
Задача: реализовать проверку на то, что пользователь ввёл целое число. Нашёл это: //Зачем использовать шаблон? template&lt;class T&gt;...

Проверка вводимых данных на соответствие типа - C++
Задание само очень простое - вычитание матриц, с помощью перегрузки функций (одна функция вычитает типы short, другая long double). ...

Проверка на NULL строки типа Int - C++
Добрый день! в С++ можно сказать второй день Нужно после совершения действий выводить данные что было изменено и на что. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
29.12.2013, 12:19  [ТС]     scanf проверка вводимого типа #10
всем большое спасибо
Yandex
Объявления
29.12.2013, 12:19     scanf проверка вводимого типа
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru