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

Некорректная работа ф-ции getch() в цикле - C++

Восстановить пароль Регистрация
 
igorperzh
3 / 3 / 0
Регистрация: 30.05.2011
Сообщений: 41
11.06.2011, 03:23     Некорректная работа ф-ции getch() в цикле #1
C++
1
2
3
4
5
while (iKey != 27)
    {
        iKey = getch();
        cout << "qwer";
    }
Не могу понять почему после нажатия любой клавиши(понятно кроме Esc) программа печатает "qwerqwer"... Подскажите в чем дело и как это исправить.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2011, 03:23     Некорректная работа ф-ции getch() в цикле
Посмотрите здесь:

Некорректная работа цикла for. C++
Некорректная работа компилятора C++
Передача ф-ции как параметра другой ф-ции C++
C++ Некорректная работа cin.fileget()
C++ Некорректная работа rand()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
doleo
6 / 6 / 1
Регистрация: 22.02.2010
Сообщений: 13
11.06.2011, 03:32     Некорректная работа ф-ции getch() в цикле #2
1-й проход цикла:
Значение переменной iKey еще пусто (!=27) - считываем символ, печатаем "qwer"
2-й проход цикла:
Значение переменной iKey = считанному в первой итерации символу

Вот так работает ваша программа
igorperzh
3 / 3 / 0
Регистрация: 30.05.2011
Сообщений: 41
11.06.2011, 11:59  [ТС]     Некорректная работа ф-ции getch() в цикле #3
Цитата Сообщение от doleo Посмотреть сообщение
1-й проход цикла:
Значение переменной iKey еще пусто (!=27) - считываем символ, печатаем "qwer"
2-й проход цикла:
Значение переменной iKey = считанному в первой итерации символу

Вот так работает ваша программа
не совсем понятно, почему печатает "qwerqwer"
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.06.2011, 12:03     Некорректная работа ф-ции getch() в цикле #4
Потому, что два раза проходит цикл. Хотите, чтобы проходило один раз, используйте цикл с пост-условием, то бишь do ... while( ... );
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.06.2011, 12:08     Некорректная работа ф-ции getch() в цикле #5
Так попробуйте
C++
1
2
while (getch()!=27)
    cout << "qwer";
Протестировать возможности не имею.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.06.2011, 12:16     Некорректная работа ф-ции getch() в цикле #6
diagon, по идее, если первым же символом нажмут 27-й, то вообще ничего не будет выведено.
igorperzh
3 / 3 / 0
Регистрация: 30.05.2011
Сообщений: 41
11.06.2011, 12:37  [ТС]     Некорректная работа ф-ции getch() в цикле #7
Цитата Сообщение от talis Посмотреть сообщение
diagon, по идее, если первым же символом нажмут 27-й, то вообще ничего не будет выведено.
если первым нажать Esc будет выведено qwer

Добавлено через 1 минуту
Мне вот что не понятно, когда нажимаю клавиши: стрелки, page up, page down, delete, insert, home, end печатаются сразу два qwer, при нажатии на др. кнопки все работает отлично
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2011, 12:59     Некорректная работа ф-ции getch() в цикле
Еще ссылки по теме:

C++ Работа с while, kbhit() и getch()
Подскажите функцию, аналогичную ф-ции getch() C++
C++ Странная работа getch

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

Или воспользуйтесь поиском по форуму:
train-killer
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 3
11.06.2011, 12:59     Некорректная работа ф-ции getch() в цикле #8
Цитата Сообщение от igorperzh Посмотреть сообщение
Мне вот что не понятно, когда нажимаю клавиши: стрелки, page up, page down, delete, insert, home, end печатаются сразу два qwer, при нажатии на др. кнопки все работает отлично
Для данных клавиш, и для некоторых других, при нажатии вводится 2-байтное значение.
Yandex
Объявления
11.06.2011, 12:59     Некорректная работа ф-ции getch() в цикле
Ответ Создать тему
Опции темы

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