Das hat eigentlich nichts mit printf
zu tun. Der C11-Standard listet Escape-Sequenzen in §5.2.2 auf und die Liste besteht aus \a
, \b
, , \n
, \r
, \t
und \v
. Als Erweiterung betrachtet GCC\e
als eine Escape-Sequenz, die für das ASCII-Zeichen Esc (\E
funktioniert möglicherweise auch, oder Ihr Compiler unterstützt möglicherweise keine von ihnen. Siehe die Dokumentation für Ihren Compiler). Was folgt, sind nicht tragbar control sequences. Es ist nicht garantiert, dass sie in allen Terminals gleich funktionieren oder überhaupt funktionieren. Der beste Weg, dies zu wissen, ist die Dokumentation Ihres Systems zu konsultieren.
§6.4.4.4 beschreibt auch Oktal-Escape-Sequenzen. Beispiel: \033
, wobei 033
27
im Dezimalformat und daher das Escape-Zeichen in ASCII ist. Ähnlich können Sie \x1b
verwenden, eine hexadezimale Escape-Sequenz, die dasselbe Zeichen angibt. Wenn wir die Ausgabe des Programms mit od -c
überprüfen, zeigt es 033
an.
(✿´‿`) ~/test> ./a.out | od -c
0000000 033 [ 0 m 033 [ ? 2 5 l 033 [ 2 J
0000016
Die ANSI-Escape-Sequenzen werden durch Terminalemulatoren interpretiert. C konvertiert die oktalen/hexadezimalen Escape-Sequenzen in das ASCII-Zeichen Esc. Ihr Compiler kann als Erweiterung auch \e
oder \E
konvertieren. Wie gewünscht, eine kurze Erklärung, was die Kontrollsequenzen tun:
[0m
: Setzt alle SGR
[?25l
Attribute: versteckt den Cursor
[2J
: aus Wikipedia:
Löscht einen Teil des Bildschirms. Wenn n
0 (oder nicht vorhanden) ist, löschen Sie den Cursor vom Cursor bis zum Ende des Bildschirms. Wenn n
1 ist, löschen Sie den Cursor vom Anfang des Bildschirms . Wenn n
2, klar gesamter Bildschirm ...
'man 5 termcap' oder' man5 terminfo' – wildplasser
Aus 'printf()' 's Perspektive funktioniert es wie jede andere' printf() 'Anweisung: Es druckt eine Folge von' char's auf die Standardausgabe. Versuchen Sie, die Ausgabe des Programms in eine Datei umzuleiten und dann den Inhalt zu überprüfen. – alk
möglich Duplikat [Reset-Bildschirm Punkt auf der Oberseite des Bildschirms in Windows & Linux-Konsole] (http://stackoverflow.com/questions/56324/reset-screen-point-to-the-top-of-screen-in- windows-linux-Konsole) – 2501