1. Функция getch() – это функция чтения одного символа со стандартного устройства ввода (то есть клавиатуры), без вывода считанного символа в стандартный поток вывода (на экран).
Прототип функции int getch (void); объявлен в файле ).
Пример: char ch;
if ( ( ch = getch () ) = = 27 )
printf («Вы нажали Escapen»);
В данном случае с клавиатуры читается один символ, заносится в переменную ch и проверяется на соответствие коду клавиши Esc (27) – и все это одним выражением.
Пример: char ch;
printf(“Символ %c имеет код %dn”, ch, ch);
2. Функция getchar () считывает очередной символ из стандартного входного потока (с клавиатуры) и копирует этот символ в стандартный выходной поток (на экран).
Прототип функции int getchar (void); объявлен в файле ).
Пример: #include
/* Note that getchar reads from stdin and is line buffered; this means it will not return until you press ENTER. */
while ( ( c = getchar() ) != ‘n’ )
Программирование на С++. Урок 39. Функция getch()
В результате выполнения этой программы на экране появится строка введенных символов, второй раз эта строка появится после нажатия Enter.
3. Функция putchar() записывает символ в стандартный поток вывода (на экран).
Прототип функции int putchar ( int c); объявлен в файле ).
Пример: char ch;
printf ( «Введите предложение»)’
while ( ( ch = getch () ) ! = ‘n’ )
10.8 Ввод – вывод массивов
Ввод двумерного массива
printf ( «ВВОД МАССИВА n» );
Вывод двумерного массива
printf ( » % 32c Исходный массив n», ‘ ‘ ); /* строка напечатается посередине */
printf ( » %15.5g», a[i][j] );
Глава 7. Блоки и процедуры
Источник: studfile.net
getch () внутри цикла while всегда возвращает 1
Я пытаюсь использовать переменную «ch» после того, как я поймаю ее с помощью функции getch () из выражения внутри цикла. Я не могу использовать его вообще, потому что он всегда возвращает один и тот же код символа (1 как int). Я знаю, что могу просто использовать while (1) и заставить работать getch () оттуда, но это считается плохой практикой, и мне интересно, почему это просто не работает таким образом.
#include #include int main() < while (char ch = getch() != ‘q’) < std::cout >
Я использую code :: blocks 13.12 с компилятором GNU GCC
кстати .. это тоже не работает
int main() < char ch; while (ch = getch() != ‘q’) < std::cout >
Решение
Вы бежите из приоритет оператора . Это как если бы вы написали:
while (ch = (getch() != ‘q’))
Которые будут 1 до q введен, в какой момент он будет 0 ,
Вы хотите сказать:
while ((ch = getch()) != ‘q’)
И в качестве Филипе Гонсалвес упоминает, ch должен быть объявлен как int не char ( getch() возвращает int )
Другие решения
Попробуйте это, у вас был неправильный порядок операций. Либо переместите назначение вправо, либо добавьте круглые скобки.
Циклы. Цикл while. Что это. Что делает. Пример. Синтаксис. Урок #14.
#include #include int main() < char ch; while ((ch = getch()) != ‘q’) < std::cout >
Обратите внимание, что не лучше объявлять переменную в условном выражении цикла.
Источник: web-answers.ru
Консоль. Считывание нажатой клавиши
Нужно, чтобы после нажатия на кнопку программа работала дальше. Чтобы после этой кнопки не приходилось еще жать Enter . Как я понял, этим занимается getchar() , но у меня он не работает, приходится жать Enter . Код для Windows:
while (z != ‘ ‘)
Отслеживать
user176230
задан 11 апр 2015 в 22:22
947 5 5 золотых знаков 18 18 серебряных знаков 31 31 бронзовый знак
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
На Windows можно использовать getch() вместе с заголовочным файлом conio.h.
#include #include int main() < int z while (z != ‘ ‘) < cout>
На *nix-OS есть curses.h (ncurses.h), там также имеется функция getch(). Однако при использовании данной функции вы остаетесь привязаны к curses, поэтому желательно использовать следующую конструкцию:
#include #include int getch( )
Также на Windows можно использовать PDCurses для создания мультиплатформенных консольных приложений, он почти полностью совместим с ncurses.
Источник: ru.stackoverflow.com