Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
517 views
in Technique[技术] by (71.8m points)

c - gotoxy() implementation for Linux using printf

I was looking for a substitute of gotoxy() for gcc compiler and found this -

void gotoxy(int x,int y)
{
    printf("%c[%d;%df",0x1B,y,x);
}

I want to know how is it functioning, I mean when do we use [ and ; inside printf, what is 0x1B doing there and how does it take the cursor to the row/column with this code?

I have never seen this type of practice for printf in books,so it would be great If you could point me to a link where I can find about such uses of printf.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is using terminal escape codes to position the cursor.

"x1B" is the escape character that tells your terminal that what comes next is not meant to be printed on the screen, but rather a command to the terminal (or most likely terminal emulator)

The trailing 'f' indicates that you want to force the cursor position somewhere, indicated by the coordinates that precede it.

Force Cursor Position   <ESC>[{ROW};{COLUMN}f

So if you call gotoxy(4,2), it ends up sending the escape sequence "(ESC)[2;4f" where ESC is the byte 0x1B.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...