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?
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.