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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.83
STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
#1

Ввод значения символьной переменной - C++

11.03.2011, 00:40. Просмотров 3032. Ответов 16
Метки нет (Все метки)

Здравствуйте. Подскажите пожалуйста, как в ЯВУ C осуществить ввод символа. Я пытался это сделать следующим образом:
scanf("%c",&ch);
собственно предварительно описав переменную ch типа char. Но никакой реакции при выполнении данного оператора. Реализовать ввод удалось только так:
scanf("%c",&ch);
scanf("%c",&ch);
В чём кроется проблема и каким образом её можно устранить ?
(я использую программную среду NetBeans)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2011, 00:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод значения символьной переменной (C++):

Существует ли метод/функция перевода значения символьной переменной в int - C++
Хотел спросить, существует ли метод/функция перевода значения символьной ПЕРЕМЕННОЙ в int?

Ввод значения целочисленной переменной из консоли - C++
Доброго времени суток. Вот проблемная часть кода: ... setlocale(LC_ALL, "Russian"); int a; cin >> a; if('\n' == a) ...

Преобразование символьной переменной в целочисленную - C++
char slovo="chislo"; int chislo=12345; Как сделать, чтобы символы "chislo" воспринималось как переменная chislo.

Двойная кавычка как значение символьной переменной - C++
Требуется вычистить строку от двойных кавычек. Строка состоит из широких символов. Как бы я ни объявлял кавычку - wchar_t ch = '"'; ...

Ввод символьной строки. Подскажите что делаю не так? - C++
Подскажите что делаю не так? char model; хочу что бы модель можно было ввести спробелами. меняем на string mondel; значит...

Символьной переменной L присвоить значение true, если отрицательная компонента вектора C встретится не позднее, чем у векторов A и B - C++
Даны векторы A, B, C, у каждого из которых есть хотя бы одна отрицатель- ная компонента. Символьной переменной L присвоить значение true,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
11.03.2011, 01:03 #2
Попробуйте перед этим действием очистить входной поток
C
1
fflush(stdin);
0
STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
11.03.2011, 01:08  [ТС] #3
asics, проблема осталась.
0
STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
11.03.2011, 01:31  [ТС] #4
Сам раньше на паскале программировал. Вот пришлось перейти на C, а тут проблемы с самым обычным вводом возникают.
0
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2011, 01:33 #5
STGE, покажыте весь код, и что конкретно не получается, а то я чето не очень вас понял.
0
a_lebedev
6 / 6 / 0
Регистрация: 05.02.2011
Сообщений: 48
11.03.2011, 01:36 #6
Работая в Borland C++ иногда использовал функцию
C++
1
char getch()
, (conio.h) которая считывает символ, вводимый с клавиатуры. Использовать ее для ввода символа можно так:
char ch = getch();
0
STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
11.03.2011, 01:39  [ТС] #7
MILAN, игнорируется ввод символа:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
    float a,b;
    char c;
    printf("vvedite ishodnie dannie: \n");
    printf("znacheniya argumentov a i b: ");
    scanf("%f%f",&a,&b);
    printf("znak arifmeticheskoi operacii: ");
    scanf("%c",&c);    
    return 0;
}
0
a_lebedev
6 / 6 / 0
Регистрация: 05.02.2011
Сообщений: 48
11.03.2011, 01:41 #8
а, так просто исправьте
C++
1
char c[1];
на
C++
1
char c;
0
Dangelo
7 / 7 / 1
Регистрация: 28.11.2010
Сообщений: 57
11.03.2011, 01:41 #9
попробуй так
C++
1
scanf("\n%f%f",&a,&b);
1
STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
11.03.2011, 01:44  [ТС] #10
Т.е. есть возможность ввести только значения переменных a и b.

Добавлено через 2 минуты
Dangelo, хоть и немножко не там, но тем не менее это сработало. Большое спасибо. А зачем использовать перевод строки в функции scanf?
0
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2011, 01:46 #11
Цитата Сообщение от STGE Посмотреть сообщение
char c[1];
Какой смысл массива с одного елемента?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <conio.h>
int main()
{
    float a,b;
    char c;
    printf("vvedite ishodnie dannie: \n");
    printf("znacheniya argumentov a i b: ");
    scanf("%f%f",&a,&b);
    printf("znak arifmeticheskoi operacii: ");
    c=getche();
    getch();
    return 0;
}
0
a_lebedev
6 / 6 / 0
Регистрация: 05.02.2011
Сообщений: 48
11.03.2011, 01:50 #12
Можно предположить, что без перевода курсора на следующую строку перед вводом ch, ch присваивался управляющий символ Enter.
1
Dangelo
7 / 7 / 1
Регистрация: 28.11.2010
Сообщений: 57
11.03.2011, 01:51 #13
scanf("%c",...) не пропускает пробельные символы и пытается читать а у тебя они остались после прошлой функции. по идее еще можно перед сканф использовать fflush

Добавлено через 39 секунд
у меня сегодня похожая проблема была, благо умный человек подсказал))
1
STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
11.03.2011, 01:57  [ТС] #14
Цитата Сообщение от MILAN Посмотреть сообщение
Какой смысл массива с одного елемента?
MILAN, это был один из вариантов (который также не давал желаемого результата).
А вот с conio.h у меня тоже проблемка (таковой в списке библиотек вовсе не имеется).

Добавлено через 2 минуты
Она случайно не считается устаревшей (не появилось ли замены) ?
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
11.03.2011, 02:31 #15
Цитата Сообщение от STGE Посмотреть сообщение
scanf("%f%f",&a,&b);
замените на
C
1
scanf("%f%f%*c",&a,&b);
и будет Вам счастье
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2011, 02:31
Привет! Вот еще темы с ответами:

Цикл, принимающий с клавиатуры отдельные символы и накапливающий их в символьной переменной, каждый раз выполняя битовую операцию | - C++
Помогите пожалуйста чайнику с заданием Организовать цикл, который принимает с клавиатуры отдельные символы и накапливает их в символьной...

Записать все слова символьной строки, чтобы каждое слово было с новой строки, и в отдельной переменной - C++
Здравствуйте. нужно сделать задание, Записать все слова символьной строки, чтобы каждое слово было с новой строки, и в отдельной...

Преобразование значения переменной (long) через функцию в значения структуры - C++
Я недавно начал заниматься С++ и программированием в целом. Вот у меня такая проблема. В этой программе не работает часть, когда...

Напишите программу, которая выдает запрос на ввод значения часов и значения минут. - C++
Условие: Напишите программу, которая выдает запрос на ввод значения часов и значения минут. Функция main() должна передать эти два...


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

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

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