很多時候我見過基於文本的程序來代替已經打印的文本。例如,假設在進步打印爲如何在命令提示符下替換已經打印的文本?
Loading: 5%
程序,然後它說
Loading: 10%
等,沒有打印這是附加新的文本?
這是如何完成的?我還沒有在庫中看到任何這樣的功能(在這種情況下是C)。不過,我有一個想法:有一個可以寫入的字符,它將提示返回到當前行的開頭(我相信\r
)。這可以用來「覆蓋」你已經打印到命令提示符的內容嗎?我所看到的
很多時候我見過基於文本的程序來代替已經打印的文本。例如,假設在進步打印爲如何在命令提示符下替換已經打印的文本?
Loading: 5%
程序,然後它說
Loading: 10%
等,沒有打印這是附加新的文本?
這是如何完成的?我還沒有在庫中看到任何這樣的功能(在這種情況下是C)。不過,我有一個想法:有一個可以寫入的字符,它將提示返回到當前行的開頭(我相信\r
)。這可以用來「覆蓋」你已經打印到命令提示符的內容嗎?我所看到的
在大多數控制檯中,在光標返回到當前行的開始位置後,寫入一個沒有換行符的裸回車\r
,允許您覆蓋現有文本。寫入退格字符\b
也會將光標移回一個字符。
對於簡單的行爲,如進度指示器,這是你所需要的。對於更復雜的行爲,您需要通過非標準手段來控制終端。在基於Unix的系統上,ncurses庫可以使用,它可以讓你的光標位置的完全控制,文本顏色,鍵盤呼應,更細粒度的鍵盤輸入,等等。
在Windows上,有一個用於操作控制檯的suite of functions,它們可以完成與Unix控制檯大部分相同的操作。
你試過了嗎? –
使用'printf''\ r'是要走的路。更復雜的是使用curses庫。 – Nobody
@George Kastrinis:現在還沒有,但我現在就來。^ – gablin