Есть ли у Equivelant для Паскаля readkey; в C или C ++? - PullRequest
3 голосов
/ 18 сентября 2011

Я ищу консольную функцию, которая ждет, когда пользователь нажмет клавишу.Я хочу, чтобы это было похоже на ключ чтения Паскаля;как в консольном решении.Нет библиотеки графического интерфейса / Графической библиотеки / Библиотеки окон / WinApi Calls (Windows).Он должен быть кроссплатформенным и (предпочтительно) частью библиотеки C std или библиотеки классов C ++.Так есть ли такой метод функции / класса и т. Д.?

Ответы [ 4 ]

4 голосов
/ 18 сентября 2011

В стандартной библиотеке C отсутствует понятие «буфер клавиатуры». Ввод / вывод в основном линейный (срабатывает при нажатии ENTER).

У вас есть несколько вариантов:

  • использовать внешнюю библиотеку, например ncurses
  • измените стратегию буферизации терминала с помощью setvbuf() и используйте fgetc() (и дождитесь ENTER, если вы не изменили стратегию буферизации)
2 голосов
/ 18 сентября 2011

Насколько я знаю, нет портативного решения для вашего предмета. В окнах вы можете использовать заголовок <conio.h>, который имеет функцию getch() для получения символа прямо из консоли. Если вы работаете в Linux, вы можете использовать библиотеку ncurses .

1 голос
/ 18 сентября 2011

Если вы находитесь в среде выполнения Windws, вы можете использовать нестандартную функцию C kbhit ().И есть эквивалент Linux на C-языке для Windows kbhit( ).Функция делает то, что вы хотите: она скажет вам, был ли введен символ клавиатуры без чтения символа;или, в качестве альтернативы, прочитает и доставит вам один символ, если он был напечатан.Вы можете найти его здесь:

http://pwilson.net/sample.html

Прокрутите вниз до абзаца, озаглавленного «Односимвольный ввод с клавиатуры для Linux и Unix»

HTH

0 голосов
/ 18 сентября 2011

Рассмотрено _getch ?

...