Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63

getchar() в linux

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

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я создал небольшую консольную программу. Сначала мне нужно ввести данные с помощью cin и нажать Enter. Сразу после cin у меня идет команда getchar(), но она, вместо того, чтобы ждать нажатия клавиши, записывает Enter, который я нажал при вводе данных через cin. Как решить эту проблему, и почему так происходит? Пожалуйста помогите.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2013, 11:48
Ответы с готовыми решениями:

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

Getchar();
Наткнулся в интернете на интересную строчку: int c; while ((c = getchar()) != EOF) putchar(c); Я не понимаю, что мы...

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

10
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
29.07.2013, 11:49
cin пропускает все whitespace, поэтому твой нажатый enter и остается в буффере. Можешь очистить cin, либо сделать еще getch
1
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
29.07.2013, 11:52
getchar ставят чтобы посмотреть результат программы до закрытия окна консоли, значит Вы пишете под винду, юзайте
C++
1
system("pause");
и такой проблемы больше не будет
1
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
29.07.2013, 11:54  [ТС]
Цитата Сообщение от Dani Посмотреть сообщение
cin пропускает все whitespace, поэтому твой нажатый enter и остается в буффере. Можешь очистить cin, либо сделать еще getch
Что значит очистить cin? Я просто новичок
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
29.07.2013, 11:56
скорее всего написать
C++
1
cin.clear();
1
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
29.07.2013, 11:59
StasyanKO, раз новичек - просто юзай system("pause"), если не спасет, то пробуй
C++
1
cin.clear(); cin.sync();
2
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
29.07.2013, 12:02  [ТС]
Спасибо большое! Разобрался
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
29.07.2013, 22:05
Цитата Сообщение от Dani Посмотреть сообщение
StasyanKO, раз новичек - просто юзай system("pause"), если не спасет, то пробуй
C++
1
cin.clear(); cin.sync();
sync() под Linux'ом работает не так, как ожидается. И стандарт говорит, что он зависим от реализации.

Не по теме:

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

0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 22:46
Цитата Сообщение от 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/... et-and-co/
0
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
30.07.2013, 09:28  [ТС]
Я просто добавил лишний getchar(); и все заработало, как надо
0
30.07.2013, 12:46

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2013, 12:46
Помогаю со студенческими работами здесь

Getchar()
#include <stdio.h> #include <string.h> int main (void) { freopen("input.txt", "r" ,stdin); // c:\ ПУТЬ ДЛЯ ВВОДА ...

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

Прервать getchar
Добрый день. Использование getchar() не подходит, т.к нужно еще раз нажимать Enter.

Про getchar
Не совсем понимаю как работает эта функция. Есть код (1.13 K&R): #include <stdio.h> int main() { int c, i, cc; cc = 0; ...

Не работает getchar()
Почему не работает getchar() и проверка? #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <time.h> ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru