0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 28
|
||||||
1 | ||||||
Программирование на С. двойной запрос ввода19.11.2016, 22:42. Показов 1368. Ответов 17
Метки нет (Все метки)
Здравствуйте!
Когда нужно ввести значение N, если ввести какую-то букву, то программа виснет. Нужно поставить ограничение на ввод исключительно чисел (что бы буквы вводить было нельзя) Нашла в сети такой нехитрый способ и у себя на сроке 27 применил его. проблема решилась- если ввести букву, то выползает предупреждение как и полагается, НО если вводишь число, то что бы программа сработала его нужно ввести два раза. Раньше, (до этого способа запрета на буквы) Нужно что бы после ввода числа, нажал интер, и программа сразу отработала, а теперь приходится ввести число, нажать интер, после чего тебя перебрасывает на новую строку, потом еще раз ввести число, нажать интер и только после этого она отработает.
0
|
19.11.2016, 22:42 | |
Ответы с готовыми решениями:
17
Двойной запрос двойной запрос Двойной ajax запрос Создать двойной запрос |
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
|
||||||
19.11.2016, 23:22 | 2 | |||||
Ну так зачем ты 2 раза функцию вызываешь?
0
|
53 / 43 / 22
Регистрация: 29.05.2016
Сообщений: 214
|
||||||
19.11.2016, 23:30 | 3 | |||||
Добавлено через 2 минуты Как вариант можно читать значения как char и потом применить функцию atoi https://ru.wikipedia.org/wiki/Atoi
0
|
0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 28
|
|
20.11.2016, 07:33 [ТС] | 4 |
Пробовал ее полностью убрать, но проблема не решилась- все так же нужно два раза вводить переменную N
0
|
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
|
||||||
20.11.2016, 09:29 | 5 | |||||
0
|
53 / 43 / 22
Регистрация: 29.05.2016
Сообщений: 214
|
|
20.11.2016, 10:17 | 6 |
shvyrevvg, Не работает! Введите букву и посмотрите результат.
0
|
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
|
|
20.11.2016, 10:32 | 7 |
Вы бы хоть скрин показали
Добавлено через 8 минут MasterYoda, если хотите заморочиться( чтобы и 34fdsf обрабатывалось), то почитайте https://www.cyberforum.ru/blogs/42536/blog278.html
0
|
53 / 43 / 22
Регистрация: 29.05.2016
Сообщений: 214
|
||||||
20.11.2016, 10:40 | 8 | |||||
функция scanf возвращает true если ввод был верный и false если была ошибка
вот вам решение этой проблемы
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
|
|
20.11.2016, 10:51 | 9 |
matveev1512, она возвращает количество введённых полей, а не bool.
1
|
53 / 43 / 22
Регистрация: 29.05.2016
Сообщений: 214
|
|
20.11.2016, 10:53 | 10 |
точно ))) Спасибо! Не знал)) Тогда это моё решение не верно
0
|
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
|
|
20.11.2016, 11:14 | 11 |
Ну в случае одного параметра, может, и верно, только надо очищать ввод.
0
|
0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 28
|
|
20.11.2016, 11:41 [ТС] | 12 |
shvyrevvg, спасибо!
Единственное, вы практически весь код переписали. Да, по функционалу она получился даже лучше, да и ошибок с текстом нет. Но мне бы еще хотелось узнать, возможно ли в моем коде решить проблему с вводом текста? и из-за чего приходится этот косяк с двойным вводом N? Выше советовали функцию atoi, но как-то о ней не очень хорошо отзываются.
0
|
53 / 43 / 22
Регистрация: 29.05.2016
Сообщений: 214
|
||||||
20.11.2016, 12:01 | 13 | |||||
Проверял разные варианты. В любом случае если не Число то scanf возвращает ноль . И да нужно очистить ввод, все верно!
Добавлено через 12 минут Попробуйте вот так
чистка ввода
0
|
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
|
||||||
20.11.2016, 12:12 | 14 | |||||
Сообщение было отмечено MasterYoda как решение
Решение
Вы два раза scanf_s("%d", &N) вызываете перед ифом и в ифе. Только не atoi, strtol можно.
1
|
0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 28
|
|
20.11.2016, 12:17 [ТС] | 15 |
shvyrevvg, Огромное спасибо.
Я тоже как раз только что от статьи пришел, на которую вы ссылку давали. Там как раз ваш метод, который вы здесь применили, рассматривался.
0
|
53 / 43 / 22
Регистрация: 29.05.2016
Сообщений: 214
|
||||||
20.11.2016, 12:19 | 16 | |||||
Сообщение было отмечено MasterYoda как решение
Решение
Я думаю вот так будет то что вам нужно
1
|
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
|
|
20.11.2016, 12:20 | 17 |
Ну это не мой метод, сам скомуниздил из этой статьи В статье более универсальный.
0
|
0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 28
|
|
20.11.2016, 12:35 [ТС] | 18 |
matveev1512, спасибо! Это тоже отлично подходит.
0
|
20.11.2016, 12:35 | |
20.11.2016, 12:35 | |
Помогаю со студенческими работами здесь
18
Двойной запрос в mysql Запрос с двойной сортировкой Двойной запрос с поиском Двойной запрос на поиск Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |