2011-08-28 36 views
1

很多時候我見過基於文本的程序來代替已經打印的文本。例如,假設在進步打印爲如何在命令提示符下替換已經打印的文本?

Loading: 5% 

程序,然後它說

Loading: 10% 

等,沒有打印這是附加新的文本?

這是如何完成的?我還沒有在庫中看到任何這樣的功能(在這種情況下是C)。不過,我有一個想法:有一個可以寫入的字符,它將提示返回到當前行的開頭(我相信\r)。這可以用來「覆蓋」你已經打印到命令提示符的內容嗎?我所看到的

+0

你試過了嗎? –

+0

使用'printf''\ r'是要走的路。更復雜的是使用curses庫。 – Nobody

+0

@George Kastrinis:現在還沒有,但我現在就來。^ – gablin

回答

7

在大多數控制檯中,在光標返回到當前行的開始位置後,寫入一個沒有換行符的裸回車\r,允許您覆蓋現有文本。寫入退格字符\b也會將光標移回一個字符。

對於簡單的行爲,如進度指示器,這是你所需要的。對於更復雜的行爲,您需要通過非標準手段來控制終端。在基於Unix的系統上,ncurses庫可以使用,它可以讓你的光標位置的完全控制,文本顏色,鍵盤呼應,更細粒度的鍵盤輸入,等等。

在Windows上,有一個用於操作控制檯的suite of functions,它們可以完成與Unix控制檯大部分相同的操作。

2

一種方法是隻打印退格字符的次數,然後替換不管你用新文本刪除。

退格字符是由\ b表示一個ASCII控制字符。

+0

剛剛嘗試過 - 它的工作原理! Yaay! ^^ – gablin

相關問題