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

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

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

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

09.01.2017, 13:33. Просмотров 185. Ответов 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 (СИ)
Напишите программу, в которой пользователь должен ввести 1 символ. По окончанию программа должна вывести, является ли этот символ буквой,...

Как определить введенное число с клавиатуры целое или нет - C (СИ)
Напишите программу на языке программирования С, определяющую является ли введённое пользователем число целым.

Определить, кратно введенное с клавиатуры число пяти, или нет - C (СИ)
нужно срочно решения помогите в visual studio оператор if определитель кратно введенное число с клавиатуры 5 или нет

Проверить, является ли введенное число является решением уравнения (составить блок-схему) - C (СИ)
Составить блок-схему Проверить, является ли введенное число является решением уравнения {ax}^{4}+{bx}^{2}+cx=d ^ - степень ...

Определить, является ли введенный с клавиатуры символ десятичной цифрой, буквой или другим символом - C++
Написать программу, выводящую на экран сообщение является ли введенный с клавиатуры символ десятичной цифрой, буквой или другим символом....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nimazzzy
Заблокирован
09.01.2017, 13:36 #2
Цитата Сообщение от MotoZPlay Посмотреть сообщение
Как задать проверку, если введена НЕ цифра
Проверить код возврата из scanf.
MotoZPlay
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 6
09.01.2017, 15:18  [ТС] #3
Цитата Сообщение от nimazzzy Посмотреть сообщение
Проверить код возврата из scanf.
Можете рассказать или показать как это делается?
cybeuser
38 / 88 / 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
465 / 444 / 166
Регистрация: 12.05.2016
Сообщений: 1,235
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
5477 / 1843 / 343
Регистрация: 10.12.2010
Сообщений: 5,435
Записей в блоге: 3
10.01.2017, 09:04 #9
Цитата Сообщение от MotoZPlay Посмотреть сообщение
Вообщем, как сделать проверку такую? Есть ли какая то функция или...?
Есть http://www.cplusplus.com/reference/cctype/

Добавлено через 1 минуту
Цитата Сообщение от codeuser Посмотреть сообщение
Объясните, пожалуйста, почему вы предлагаете способ:
По незнанию, не ведитесь.
shvyrevvg
465 / 444 / 166
Регистрация: 12.05.2016
Сообщений: 1,235
10.01.2017, 09:12 #10
codeuser, HighPredator, вы правы, не знал. Думал, что вместо
C
1
2
char c;
while((c=getchar())!= '\n' && c != EOF);
можно просто делать fflush(stdin);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2017, 09:12
Привет! Вот еще темы с ответами:

Определить, является ли введенный с клавиатуры символ десятичной цифрой, буквой или другим символом - C++
Написать программу, выводящую на экран сообщение является ли введенный с клавиатуры символ десятичной цифрой, буквой или другим символом....

Является ли симол буквой или цифрой - C++
Задан ряд символов. Определить количество символов, которые не являются буквами или цифрами , и напечатать их. я пробовал чтото...

Является ли введенный символ цифрой или буквой - Turbo Pascal
пожалуйста написать программу Является ли введенный символ цифрой или буквой через множество.

Проверка символа (char), является ли он буквой, цифрой или пробелом - C#
скажите пожалуиста как можно проверить следующее:что символ (char ) может быть или буквы (большие или маленькие) или цифры или...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.01.2017, 09:12
Ответ Создать тему
Опции темы

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