Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/40: Рейтинг темы: голосов - 40, средняя оценка - 4.80
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12

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

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

Студворк — интернет-сервис помощи студентам
как узнать, что пользователь ввёл не число а строку, если от него требовалось первое и запрос проходил через функцию scanf?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.12.2013, 11:22
Ответы с готовыми решениями:

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

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

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

9
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
28.12.2013, 12:25
проверяй возвращаемое значение scanf
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
28.12.2013, 23:04  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
проверяй возвращаемое значение scanf
не вариант , потому, что если происходит ошибка ввода, то ни какое значение переменной не присваивается, а следственно как мы будем сверять значение? ну допустим переменной можно присвоить экзотическое число -1234321 , навряд ли такое пользователь введёт, но всё таки это же не корректно.
нашёл такое решение, проверка флага в структуре FILE , stdin->_cnt > 1 если больше единицы, то была введена строка, если единица, то была введена цифра.
P.S. забыл сказать условие было такое, что программу нужно писать на СИ поэтому функции потоковых объектов ввода вывода не подходят
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
28.12.2013, 23:11
Цитата Сообщение от Van111 Посмотреть сообщение
не вариант , потому, что если происходит ошибка ввода, то ни какое значение переменной не присваивается, а следственно как мы будем сверять значение?
сканф - функция, функции могут возвращать значения с помощью return. почитай доку что возвращает scanf
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.12.2013, 23:41
C++
1
2
3
int a;
if (!scanf("%d", &a))
    printf("Error scanf!\n");
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.12.2013, 23:45
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;
}
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.12.2013, 23:47
Единственный надёжный способ - прочитать все данные в строковой буфер и потом его проанализровать
https://www.cyberforum.ru/blogs/42536/blog278.html

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

Code
$ ./a.exe
34872637475643756348753476598347
number: 2147483647
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.12.2013, 23:50
Evg, переполнение это уже совсем другая история.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.12.2013, 23:55
Цитата Сообщение от Tulosba Посмотреть сообщение
Evg, переполнение это уже совсем другая история.
Просто я воспринимаю вопрос ТС'а как пожелание сделать программу с нормальным вводом. Хотя может он хотел узнать только то, о чём спросил
1
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
29.12.2013, 12:19  [ТС]
всем большое спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.12.2013, 12:19
Помогаю со студенческими работами здесь

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

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

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

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

Проверка типа вводимой переменной
Как в этом кусочке кода записать так, чтобы вводилась только переменная типа int, иначе &quot;повторите ввод&quot; struct Weather...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru