В Unix, когда я нажимаю клавишу со стрелкой, она показывает эту строку, но в то время как scanf не принимает ее как вход. Пожалуйста, объясните, как принять его в качестве входных данных. Можем ли мы что-то сравнить персонажа с charater, как первый^[это клавиша Esc и т. Д.?^[[Символьная комбинация
ответ
Это escape-последовательность, сгенерированная этим ключом. '^['
- CTRL-[
(знак ESC
), а два других символа: '['
и 'A'
.
Если вы хотите обработать их, вам нужно будет прочитать все три символа и решить, что они означают, что пользователь нажал клавишу со стрелкой вверх.
Независимо от того, сможете ли вы это сделать с scanf
, зависит от строки формата. Для этого я бы использовал более низкий уровень ввода символов.
I never[f]scanf
в реальном коде с момента выхода из строя, в результате чего вы не знаете, где находится указатель ввода. Для линейного ввода я считаю, что всегда лучше использовать fgets
, а затем sscanf
полученную строку.
Но, как я уже сказал, вы должны использовать getc
и его братьев для ввода/вывода символов низкого уровня. Или найти функцию более высокого уровня, такую как readline
под Linux, или другие библиотеки, которые знают, чтобы преобразовать их в специальные коды ключей, такие как VK_KEY_UP
, которые вы можете обрабатывать.
- 1. Неограниченная символьная символьная ошибка
- 2. 13 Символьная метка времени
- 3. символьная строка ожидается ошибка
- 4. непризнанная символьная переменная (JAVA)
- 5. C символьная константа + strcture
- 6. Символьная замена в Matlab
- 7. Символьная математика с n
- 8. Символьная кодировка Spring MVC
- 9. Match символьная строка
- 10. ASM символьная константа поведение
- 11. Неровная символьная строка split
- 12. Python сырой символьная строка
- 13. PHP расшифровывает символьная строка
- 14. Многосимвольная символьная постоянная ошибка
- 15. Символьная интеграция Python
- 16. Диагональная символьная матрица
- 17. Cocos2D Символьная анимация
- 18. Символьная замена в строке
- 19. C - символьная конкатенация строки
- 20. python "incrementing" символьная строка?
- 21. Символьная математика в Haskell
- 22. Печать символьная строка за символом
- 23. символьная строка или константа строки
- 24. █ символьная строка, проиндексированная в python
- 25. Символьная видимость косвенно связанных библиотек
- 26. Django шаблон excape символьная строка
- 27. Многомерная символьная матрица в Python
- 28. Многобайтовая символьная проблема с .match?
- 29. Изабель - символьная и строковая литерал
- 30. xml стандартная символьная нотация, "-" Значение
Хорошо, у меня есть. У меня есть одна проблема. Как в оболочке, как только, когда мы нажимаем клавишу со стрелкой, она показывает историю команд мгновенно. Но вышеупомянутый метод comaprison требует взять новую строку с завершенной строкой, а затем сравнить символ по charac. Пожалуйста, скажите мне, как оболочка обрабатывает комбинацию из 3-х символов, как только нажимается charator? – avd
Устанавливает терминал в режим RAW. В этом режиме терминал отправляет вам символы по мере их ввода. В режиме COOKED (по умолчанию для приложений) терминал собирает целую строку и затем отправляет ее в приложение. –
Скорее всего, bash (или readline, который, как мне кажется, он использует под обложками), поставил терминал в необработанный режим, где персонажи сразу приводятся в приложение. Альтернативой является режим варки, где в приложение добавляется только полная строка. Это с первых дней, когда было неэффективно иметь компьютерные символы. Мейнфрейм был еще хуже в том, что он отправил целые экраны в программу при нажатии ENTER. – paxdiablo