簡體   English   中英

printf(“ \\ 033c”)是什么意思?

[英]What does printf(“\033c” ) mean?

關閉程序后,我一直在尋找一種“重置” Unix終端窗口的方法,偶然發現了printf("\\033c" ); 效果很好,但我聽不懂。 我去了man console_codes ,由於我對Unix c編程不了解,所以它不是很有幫助。

有人可以解釋一下printf("\\033c" );

在C中, 以前導零開頭的數字是八進制數字。 以8為底​​的數字。

它所做的是打印由八進制數字33表示的字符,后跟一個'c'

ASCII編碼中 ,八進制數字33ESC (轉義)字符,它是終端控制序列的通用前綴。

借助搜索終端控制序列的知識,我們可以找到例如VT100控制序列參考VT100是一個古老的“啞”終端,並且被大多數現代終端程序所模擬)。 使用VT100參考,我們在終端設置部分找到<ESC>c ,該文件記錄為

重置設備<ESC>c

將所有終端設置重置為默認值。


ESC字符也可以使用"\\x1b" (仍然假定為ASCII編碼)進行打印。 無法在常量字符串文字中使用十進制數字,只能使用八進制和十六進制。

但是 (如所指出的chux的表彰序列) "\\x1bc" 不會做一樣的"\\033c" 這是因為0x1bc是有效的十六進制數,並且編譯器在解析此類序列時會貪婪 它會改為打印由值0x1bc表示的字符,我不知道它可能是什么(取決於我認為的語言環境和終端設置,可能應將其當作Unicode字符使用)。

這是用於重置 DEC VT100(或兼容)端子的轉義序列。 某些終端(例如Linux控制台)接受VT100樣式的轉義序列,即使它們實際上不是VT100。

\\033是ASCII轉義字符,以這些序列開頭。 多數字符后跟另一個特殊字符(這是罕見的例外)。 XTerm Control Sequences列出了該列表以及未帶有特殊字符的其他字符。

在ECMA-48中,通常情況下可以使用其他字符,例如[ *控制序列啟動器。

重置真正的VT100(與終端仿真器相比)並不能清除屏幕,正如Debian Bug報告日志中指出的那樣-笨拙的終端#60377“重置”已損壞 ,但是終端仿真器的用戶傾向於認為這是一種簡短的方法清除屏幕。 標准方式如下:

printf("\033[H\033[J");

ncurses常見問題解答為什么重置會使我注銷? 解決了這個問題。

順便說一下,終端仿真器的用戶也會因終端混亂而遇到其他問題。 ncurses常見問題解答如何使用VT100着色? 解決其中之一。

它會在Linux類型的操作系統(ubuntu,fedora等)中清除屏幕。 您可以在此處檢查ASCII表。 在八進制33(十進制27)下,您具有ESC字符。 http://www.asciitable.com/index/asciifull.gif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM