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

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

Войти
Регистрация
Восстановить пароль
 
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
#1

getchar() в linux - C++

29.07.2013, 11:48. Просмотров 1048. Ответов 10
Метки нет (Все метки)

Здравствуйте! Я создал небольшую консольную программу. Сначала мне нужно ввести данные с помощью cin и нажать Enter. Сразу после cin у меня идет команда getchar(), но она, вместо того, чтобы ждать нажатия клавиши, записывает Enter, который я нажал при вводе данных через cin. Как решить эту проблему, и почему так происходит? Пожалуйста помогите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2013, 11:48     getchar() в linux
Посмотрите здесь:

getchar - C++
Не пойму почему getchar 2-ой раз запрашивает ввести строку, я же написал в цикле условие, что выполняется, если ch!=10 char ch=0; for...

getchar () - C++
a = getchar (); if ( a == 'q' ) // действие 1 a = getchar (); if ( a == 'w' ) // действие 2 Почему не работает такая...

Getline, getchar - C++
Подскажите пожалуйста, как я поняла getline это шаблон функции, который построчно извлекает строки из выходного потока, но что делается...

Функция getchar() в С++ - C++
#include <iostream> // для оператора cout #include <cctype> // для функции islower #include <cmath> //для математич. вычислений ...

[C++] аналог getchar() - C++
привет ВСЕМ, ЗАДАЧА: Найти периметр и площадь равнобедренной трапеции с основаниями a и b (a > b) и углом alpha при большем основании...

Функция getchar! - C++
Здравствуйте, поясните на пальцах, что делает данная программа? #include <stdio.h> int main(void) { char ch; printf("Enter...

функции getchar() и putchar() - C++
Здравствуйте всем. Такая вот задачка: Есть вот такой код: #include <iostream> #include <conio.h> using namespace std; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 2
Завершенные тесты: 1
29.07.2013, 11:49     getchar() в linux #2
cin пропускает все whitespace, поэтому твой нажатый enter и остается в буффере. Можешь очистить cin, либо сделать еще getch
aLarman
641 / 562 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.07.2013, 11:52     getchar() в linux #3
getchar ставят чтобы посмотреть результат программы до закрытия окна консоли, значит Вы пишете под винду, юзайте
C++
1
system("pause");
и такой проблемы больше не будет
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
29.07.2013, 11:54  [ТС]     getchar() в linux #4
Цитата Сообщение от Dani Посмотреть сообщение
cin пропускает все whitespace, поэтому твой нажатый enter и остается в буффере. Можешь очистить cin, либо сделать еще getch
Что значит очистить cin? Я просто новичок
aLarman
641 / 562 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.07.2013, 11:56     getchar() в linux #5
скорее всего написать
C++
1
cin.clear();
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 2
Завершенные тесты: 1
29.07.2013, 11:59     getchar() в linux #6
StasyanKO, раз новичек - просто юзай system("pause"), если не спасет, то пробуй
C++
1
cin.clear(); cin.sync();
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
29.07.2013, 12:02  [ТС]     getchar() в linux #7
Спасибо большое! Разобрался
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
29.07.2013, 22:05     getchar() в linux #8
Цитата Сообщение от Dani Посмотреть сообщение
StasyanKO, раз новичек - просто юзай system("pause"), если не спасет, то пробуй
C++
1
cin.clear(); cin.sync();
sync() под Linux'ом работает не так, как ожидается. И стандарт говорит, что он зависим от реализации.

Не по теме:

P.S. "спасибо" случайно жамкнул, ну да ладно)

alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 22:46     getchar() в linux #9
Цитата Сообщение от aLarman Посмотреть сообщение
скорее всего написать:
C++
1
cin.clear();
cin.clear() не очищает поток (не освобождает от символов, которые в нём есть), флаги потока сбрасывает. Про sync() в Linux уже написали, пробовал, не работает (может зависит от реализации). Самое простое, для остановки, в этом случае, два getchar(). В более сложных случаях можно так:
C++
1
2
cin.clear();
while (cin.get() != '\n'); // очистка потока
или cin.ignore() использовать. Вариантов много.
Можно здесь почитать: http://cppstudy.wordpress.com/2009/0...in-get-and-co/
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
30.07.2013, 09:28  [ТС]     getchar() в linux #10
Я просто добавил лишний getchar(); и все заработало, как надо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2013, 12:46     getchar() в linux
Еще ссылки по теме:

Getchar и putchar EOF - C++
Подскажите что за символ такой EOF? Чисто догадываясь это 0, но не работает. #include <stdio.h> int main() { int c; while((c...

как работает getchar() ? - C++
int c; c=getchar(); cout << c; Набираю на клаве число 123 Cout выдает число 49 ??? Добавлено через 1 минуту из-за нажатия...

Уточнение как работает getchar(); - C++
Я ввёл 4 символа в оператор getchar(); и нажал <Enter>. Количество введённый символов получается 5? В смысле <Enter> это же символ...

Getchar и putchar тип данных - C++
Скажите пожалуйста, почему мы используем именно тип int в данной программе, а не char? (в книжке про это написано, но я не понял что там...

Массив: функции getchar и putchar - C++
Задан массив. «Фамилия_стаж работы_зарплата». Преобразовать массив так: стаж работы увеличить на год, если он станет равен 10, то зарплату...


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

Или воспользуйтесь поиском по форуму:
aLarman
30.07.2013, 12:46     getchar() в linux
  #11

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
cin.clear() не очищает поток (не освобождает от символов, которые в нём есть), флаги потока сбрасывает. Про sync() в Linux уже написали, пробовал, не работает (может зависит от реализации). Самое простое, для остановки, в этом случае, два getchar(). В более сложных случаях можно так:
сори, я не силен в этом, просто предположил что этот метод как раз и занимается чисткой

Yandex
Объявления
30.07.2013, 12:46     getchar() в linux
Ответ Создать тему
Опции темы

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