^[[A character combination

ascii, unix

Solution

That's the escape sequence generated by that key. `'^['` is `CTRL-[` (the `ESC` character), and the other two characters are `'['` and `'A'`.

If you want to process them, you'll need to read all three characters and decide that they mean the user pressed the up-arrow key.

Whether or not you can do this with your `scanf` depends on the format string. I would be using a lower level of character input for this.

I never use `[f]scanf` in real code since failure results in you not knowing where the input pointer is located. For line-based input, I find it's always better to use `fgets` and then `sscanf` the string retrieved.

But, as I said, you should be using `getc` and its brethren for low-level character I/O. Or find a higher level function such as `readline` under Linux, or other libraries that know to convert it into special keycodes such as `VK_KEY_UP` that you can process.

Problem

On Unix, when I press up arrow key, it shows this string, but while scanf, it does not take it as input. Please explain how to take it as input. Can we something like compare the character by charater like first ^[ is Esc key and so on?

Original source