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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
MotoZPlay
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 5
#1

Условие для проверки является ли введенное с клавиатуры буквой или цифрой - C (СИ)

09.01.2017, 13:33. Просмотров 168. Ответов 9
Метки нет (Все метки)

Вообщем, как сделать проверку такую? Есть ли какая то функция или...?
Допустим вот есть кусок кода, с проверкой уже на ввод числа от 1 до 8, если введено число вне диапазона, то просит ввести еще раз.
C
1
2
3
4
    do {
        printf("Введите количество ( не больше 8 ): ");
        scanf("%d", &kolvo);
    } while (kolvo<1 || kolvo>8);
переменная kolvo имеет тип int, если я туда введу любой другой символ - программа начинает сходить с ума.
Как задать проверку, если введена НЕ цифра, то повторить ввод, как это сделано у меня с проверкой ввода числа от 1 до 8.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 13:33     Условие для проверки является ли введенное с клавиатуры буквой или цифрой
Посмотрите здесь:

Проверка того что каждый символ во входной строке является цифрой C (СИ)
Определить, является ли символ буквой C (СИ)
C (СИ) Как определить введенное число с клавиатуры целое или нет
C (СИ) Проверить, является ли введенное число является решением уравнения (составить блок-схему)
C (СИ) Определить, чем является символ - цифрой или буквой
Определить является ли введенное число простым C (СИ)
C (СИ) Определить является ли введенное число простым
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nimazzzy
Заблокирован
09.01.2017, 13:36     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #2
Цитата Сообщение от MotoZPlay Посмотреть сообщение
Как задать проверку, если введена НЕ цифра
Проверить код возврата из scanf.
MotoZPlay
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 5
09.01.2017, 15:18  [ТС]     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #3
Цитата Сообщение от nimazzzy Посмотреть сообщение
Проверить код возврата из scanf.
Можете рассказать или показать как это делается?
cybeuser
37 / 87 / 39
Регистрация: 18.11.2013
Сообщений: 263
09.01.2017, 19:33     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #4
MotoZPlay, попробуйте так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main()
{
    int N = 0;
    int res = 0;
    while(!res || N < 1 || N > 8)
    {
        if(!res)
            fflush(stdin);
        res = scanf("%d",&N);
        printf("res = %d, N = %d\n",res,N);
    }
    printf("N = %d\n", N);
    return 0;
}
nimazzzy
Заблокирован
09.01.2017, 19:36     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #5
Цитата Сообщение от MotoZPlay Посмотреть сообщение
Можете рассказать или показать как это делается?
Можно просто прочитать документацию по функции. Там написано, что она возвращает в каких случаях.
Делается как здесь: Как работает else if? Что я сделал неправильно?
codeuser
2 / 2 / 4
Регистрация: 09.01.2017
Сообщений: 16
09.01.2017, 22:40     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #6
MotoZPlay, Здравствуйте, попробуйте так.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <locale.h>
int main()
{
    int kolvo;
 
    setlocale(LC_ALL, "Russian");
    do {
        printf("Введите количество ( не больше 8 ): ");
        scanf("%d", &kolvo);
        while(getchar()!= '\n');
    } while(kolvo<1 || kolvo>8);
 
    return 0;
}
shvyrevvg
356 / 356 / 141
Регистрация: 12.05.2016
Сообщений: 991
10.01.2017, 04:26     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #7
Цитата Сообщение от codeuser Посмотреть сообщение
C
1
while(getchar()!= '\n');
C
1
fflush(stdin);
codeuser
2 / 2 / 4
Регистрация: 09.01.2017
Сообщений: 16
10.01.2017, 08:57     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #8
shvyrevvg, здравствуйте.
Судя по сообщению ТС, "если я туда введу любой другой символ", а не "буду читать символ из" предположил, что ввод данных в программу производится через терминал.
Объясните, пожалуйста, почему вы предлагаете способ:
C
1
fflush(stdin);
Вот что по этому вопросу удалось выяснить:
("Язык программирования лекции и упражнения Stephen Prata 6-е издание")
"Результат использования функции fflush () на входном потоке не определен." (с)
(SO)
"So it's not a question of "how bad" this is. fflush(stdin) is plainly wrong, and you mustn't use it, ever." (c)
(SO)
"As far as flushing the input buffer (stdin), you should not do that. Flushing stdin is undefined behavior according to the C11 standard §7.21.5.2 part 2:" (c)
(Подобная тема с этого форума)
fflush(stdin)
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,381
Записей в блоге: 3
10.01.2017, 09:04     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #9
Цитата Сообщение от MotoZPlay Посмотреть сообщение
Вообщем, как сделать проверку такую? Есть ли какая то функция или...?
Есть http://www.cplusplus.com/reference/cctype/

Добавлено через 1 минуту
Цитата Сообщение от codeuser Посмотреть сообщение
Объясните, пожалуйста, почему вы предлагаете способ:
По незнанию, не ведитесь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2017, 09:12     Условие для проверки является ли введенное с клавиатуры буквой или цифрой
Еще ссылки по теме:

C (СИ) Определить, является ли введенное число палиндромом
Определить, кратно введенное с клавиатуры число пяти, или нет C (СИ)
Вывести, является ли символ буквой, числом или специальным символом C (СИ)
Определить, является ли введенное число счастливым C (СИ)
C (СИ) Написать функцию, определяющую , является ли введенный символ цифрой

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

Или воспользуйтесь поиском по форуму:
shvyrevvg
356 / 356 / 141
Регистрация: 12.05.2016
Сообщений: 991
10.01.2017, 09:12     Условие для проверки является ли введенное с клавиатуры буквой или цифрой #10
codeuser, HighPredator, вы правы, не знал. Думал, что вместо
C
1
2
char c;
while((c=getchar())!= '\n' && c != EOF);
можно просто делать fflush(stdin);
Yandex
Объявления
10.01.2017, 09:12     Условие для проверки является ли введенное с клавиатуры буквой или цифрой
Ответ Создать тему
Опции темы

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