Asutosh Rath
Asutosh Rath

Reputation: 43

printf data type specifier complex question

printf("\e[2J\e[0;0H");

What does this line mean?

Can I know what to learn and from where to understand this statement?

Upvotes: 3

Views: 296

Answers (2)

chux
chux

Reputation: 153517

"\e" as an escape sequence is not part of the C standard.

A number of compilers treat the otherwise undefined behavior as a character with the value of 27 - the ASCII escape character.

Alternative well defined code:

//printf("\e[2J\e[0;0H");
printf("\x1B[2J\x1b[0;0H");
printf("\033[2J\033[0;0H");
#define ESC "\033"
printf(ESC "[2J" ESC "[0;0H");

The escape character introduces ANSI escape sequences as well answered in @Mickael B.. Select terminals implement some of these sequences.

Upvotes: 1

Mickael B.
Mickael B.

Reputation: 5215

They are ANSI escape sequences

These sequences define functions that change display graphics, control cursor movement, and reassign keys.

It starts with \e[ and the following characters define what should happen.

2J: clears the terminal

Esc[2J Erase Display: Clears the screen and moves the cursor to the home position (line 0, column 0).

0;0H moves the cursor to the position (0, 0)

Esc[Line;ColumnH Cursor Position: Moves the cursor to the specified position (coordinates).

See also:

Upvotes: 0

Related Questions