Это управляющая последовательность, сгенерированная этим ключом. '^['
- это CTRL-[
(символ ESC
), а два других символа - '['
и 'A'
.
Если вы хотите обработать их, вам нужно прочитать все три символа и решить, что они означают, что пользователь нажал клавишу со стрелкой вверх.
То, можете ли вы сделать это с помощью scanf
, зависит от строки формата. Для этого я бы использовал более низкий уровень ввода символов.
I никогда использовать [f]scanf
в реальном коде, поскольку в результате сбоя вы не знаете, где находится входной указатель. Я считаю, что для линейного ввода всегда лучше использовать fgets
, а затем sscanf
полученную строку.
Но, как я уже сказал, вы должны использовать getc
и его братьев для низкоуровневого ввода / вывода символов. Или найдите функцию более высокого уровня, такую как readline
под Linux, или другие библиотеки, которые знают, как преобразовать ее в специальные коды клавиш, такие как VK_KEY_UP
, которые вы можете обрабатывать.